如何在postgresql中使用GMT时间?

时间:2009-09-04 17:03:49

标签: postgresql timezone

我们在使用GregorianCalendar的java代码中运行。我们想在postgresql数据库中将它们作为GMT + 0时间在时间​​戳类型列中保留,但我们不确定如何去做。这些字段应该带有时间戳还是没有?通过一个类似的标记“当前”时间postgres功能我们应该使用current_timestamp or localtimestamp

1 个答案:

答案 0 :(得分:33)

从这里开始 - 第8.5.3节。来自文档的“Time Zones”。

CURRENT_TIMESTAMP和LOCALTIMESTAMP之间的区别是结果的类型 - 前者返回“带时区的时间戳”,后者返回“时间戳”:

milen=> select CURRENT_TIMESTAMP;
              now
-------------------------------
 2009-09-05 01:21:37.595704+03
(1 row)

milen=> select LOCALTIMESTAMP;
         timestamp
----------------------------
 2009-09-05 01:21:41.956355
(1 row)

完全在你希望看到当前时间的时区是另一回事。在这种情况下,默认时区(可以通过多种方式设置,所有这些都在上面链接的部分中描述)很重要。您还可以在查询中使用"AT TIME ZONE"来获取特定时区的当前时间,而无需“摆弄”“时区”设置:

milen=> select CURRENT_TIMESTAMP AT TIME ZONE 'UTC';
          timezone
----------------------------
 2009-09-04 22:21:44.418236
(1 row)