我有一个Java应用程序,它使用准备好的语句将数据插入数据库。在preparedstatement中,日期以UTC格式设置。
preparedStatement.setDate(index, new java.sql.Date(date.getTime()), UTC);
我想确保在表上执行读写操作时,响应应该ALWAYS是UTC格式。在下面的查询中,当读取数据时,它将被转换为客户端的时区。我不希望将TIME_COLUMN转换为任何时区。它应该保持在UTC时区。如何以这种方式定义TIME_COLUMN ?
注意:我不能编辑DB时区。我无法使用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
或者,您可以在应用程序级别转换时区。