我有一些时间戳存储为 Postgres 类型timestamp without time zone
。
我将以时间戳2013-12-20 20:45:27
为例。我打算这代表一个UTC时间戳。
在 psql 中,如果我运行 query SELECT start_time FROM table_name WHERE id = 1
,我会按预期返回那个时间戳字符串2013-12-20 20:45:27
:
但是,如果在我的 Node 应用程序中,我使用 node-postgres 库来运行相同的查询,我会得到本地时区的时间戳:Fri Dec 20 2013 20:45:27 GMT-0600 (CST)
. 这是一个 Javascript 日期对象,但它已经存储为该时区。我真正想要的是一个代表2013-12-20 20:45:27 GMT+0000
. 我已经知道这次是UTC。
我尝试将我的 postgresql.conf 文件中的时区参数设置为: timezone = 'UTC'
,结果没有差异。
我究竟做错了什么?
编辑
问题似乎在这个文件中:https ://github.com/brianc/node-postgres/blob/master/lib/types/textParsers.js
如果从 Postgres 返回的日期字符串没有指定时区(即Z
或+06:30
,那么它只是构造一个 JavaScript 日期对象,我相信它只会包含本地时区。我要么需要更改我的应用程序以存储数据库中的时区或覆盖此转换器。