rails 6.1.4.1
activerecord-jdbcpostgresql-adapter (61.1-java)
activerecord-jdbc-adapter (61.1-java)
jdbc-postgres (42.2.14)
jruby 9.2.19.0 on openjdk8
application.rb
config.time_zone = "UTC"
Table "public.foobars"
Column | Type | Collation | Nullable | Default
--------------------------------------------------------+-----------------------------+-----------+----------+--------------------------------------------------
id | integer | | not null | nextval('foobars_id_seq'::regclass)
created_at | timestamp without time zone | | |
updated_at | timestamp without time zone | | |
When prepared statements are turned on and a record is inserted into the database, the active record debug log shows the correct UTC timestamp with an offset of +00:00.
[DEBUG] [2021-10-08 13:13:20 -0600] Foobar Create (31.2ms) INSERT INTO "foobars" ("created_at", "updated_at") VALUES (?, ?) [["created_at", Fri, 08 Oct 2021 19:13:20.573182000 UTC +00:00], ["updated_at", Fri, 08 Oct 2021 19:13:20.573363000 UTC +00:00], ]
However the inserted record takes my current offset (MDT -6:00) and applies it to the record, saving the incorrect time.
app_development=# select * from foobars;
-[ RECORD 1 ]------------------------------------------+-----------------------------------------
created_at | 2021-10-08 13:13:14.411114
updated_at | 2021-10-08 13:13:14.411256
Turning off prepared statements solves this problem.
jruby 9.2.19.0onopenjdk8When prepared statements are turned on and a record is inserted into the database, the active record debug log shows the correct UTC timestamp with an offset of
+00:00.However the inserted record takes my current offset (
MDT -6:00) and applies it to the record, saving the incorrect time.Turning off prepared statements solves this problem.