在 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
或者,您可以在应用程序级别转换时区。
我有一个 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
或者,您可以在应用程序级别转换时区。