在 Postgresql 中读取和写入 UTC 到 TIMESTAMP

Reading and Writing UTC to TIMESTAMP in Postgresql

我有一个 Java 应用程序,它使用准备好的语句将数据插入数据库。在 preparedStamement 中,日期设置为 UTC 格式。

preparedStatement.setDate(index, new java.sql.Date(date.getTime()), UTC);

我想确保在 table 上执行读写操作时,响应应该 ALWAYS 为 UTC 格式。在下面的查询中,当读取数据时,它将被转换为客户端的时区。我不想将 TIME_COLUMN 转换为任何时区。它应该保持在 UTC 时区。我怎样才能这样定义 TIME_COLUMN?

注意:我无法编辑数据库时区。我无法使用 At time zone 编辑 select 查询。

"TIME_COLUMN" TIMESTAMPTZ default (now() at time zone 'utc'),

您可以将 RDBMS 的时区设置为 UTC,参见 https://medium.com/building-the-system/how-to-store-dates-and-times-in-postgresql-269bda8d6403

完成后,无论您存储什么日期,它们都将采用 UTC 格式。从 UTC 转换成其他东西可以在查询中完成,比如

select created_at at time zone 'utc' at time zone 'america/los_angeles'
from users;

取自https://popsql.com/learn-sql/postgresql/how-to-convert-utc-to-local-time-zone-in-postgresql

或者,您可以在应用程序级别转换时区。