【发布时间】:2021-02-16 16:11:27
【问题描述】:
我正在使用 Postgres 中的 to_timestamp 函数将整数值转换为时间戳。当我这样做时,时区设置为 +1,存储时间增加一小时。
我位于英国,因此当前时区偏移量应为 +0,而不是 +1。
有谁知道如何手动停止/设置时区?
例子:
UPDATE my_table SET date_time_updated = to_timestamp(0) where id = 1;
SELECT date_time_updated FROM my_table WHERE id = 1; //Would expect midnight 01/01/1970
date_time_updated
------------------------
1970-01-01 01:00:00+01
(1 row)
【问题讨论】:
-
为什么用整数混淆?为什么不使用
date_time_update = timestamp '1970-01-01 00:00:00'?或者甚至更好date_time_update = '-infinity'? -
对不起,我可能应该解释一下,我需要使用整数,因为我正在使用 Javascript 来计算随机纪元时间,然后使用它来设置时间戳。 01/01/1970 只是一个示例,以证明即使我尝试使用 0,它也没有设置为应有的 Unix 纪元(由于时区增加了一个小时)。
-
它被设置为 Unix 纪元,因为纪元时间在 UTC 时区中总是。试试
select extract (epoch from '1970-01-01 01:00:00+01'::timestamptz)- 它返回0。要达到你需要使用select to_timestamp(0)::timestamptz at time zone 'utc' -
谢谢,这对我有用