As a follow up:
I've implemented this in my code as follows:
array_of_arrays = [[123456, Date.iso8601('2018-08-15')],
[123457, Date.iso8601('2018-08-15')],
[123458, Date.iso8601('2018-08-15')]]
DB.from(Sequel[:services].as(:svcs), DB.values(array_of_arrays).
as(:updsvcs, [:sid, :new_billed_through])).
where{svcs[:service_id] =~ updsvcs[:sid]}.
update( :billed_through => Sequel[:updsvcs][:new_billed_through])
I'm having trouble with this however as one of the fields in my actual code
and DB is a date field. However when it's turned into a 'value', the data
is turned into text (I think that's when this happens) as I get the
following error on insert:
PG::DatatypeMismatch: ERROR: column "billed_through" is of type date but
expression is of type text
The DB logger shows the following resulting output (I've replace the actual
data with my dummy array of arrays as above and cleaned up the formatting)
E, [2018-08-30T15:39:54.660212 #24068] ERROR -- : PG::DatatypeMismatch:
ERROR:
column "billed_through" is of type date but expression is of type text
LINE 1: ...PDATE "services" AS "svcs" SET "billed_through" = "updsvcs"....
^
HINT: You will need to rewrite or cast the expression.:
UPDATE "services" AS "svcs"
SET "billed_through" = "updsvcs"."new_billed_through"
FROM (VALUES (123456, '2018-08-15'),
(123457, '2018-08-15'),
(123458, '2018-08-15')) AS "updsvcs"("sid",
"new_billed_through")
WHERE ("svcs"."service_id" = "updsvcs"."sid")
Is there a way to cast that value as a date that Postgres will accept for
that field?
Thanks so much!
--
You received this message because you are subscribed to the Google Groups
"sequel-talk" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To post to this group, send email to [email protected].
Visit this group at https://groups.google.com/group/sequel-talk.
For more options, visit https://groups.google.com/d/optout.