如何在postgresql中使用GMT时间?

Ada*_*dam 15 postgresql timezone

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

Mil*_*dev 33

从这里开始 - 第8.5.3节.文档中的" 时区 ".

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)
Run Code Online (Sandbox Code Playgroud)

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

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