gpt4 book ai didi

postgresql - TIMESTAMP 与 TIMESTAMPTZ 取时差时的正确值

转载 作者:行者123 更新时间:2023-11-29 11:39:24 30 4
gpt4 key购买 nike

对于查询:

SELECT '2018-03-01'::TIMESTAMP - '2018-09-01'::TIMESTAMP, 
'2018-03-01'::TIMESTAMPTZ - '2018-09-01'::TIMESTAMPTZ;

TIMESTAMP 的值-184 天TIMESTAMPTZ-183 天-23:00:00被退回。

对我来说,-184 天“似乎”是正确的,但我总是被告知要使用 TIMESTAMPTZ。哪个是正确答案?

最佳答案

作为对 OP 问题下评论讨论的补充发布的答案。


数据类型timestamptz实际上是带时区的时间戳,而timestamp是不带时区的时间戳。

像下面这样减去这些特定日期得到的结果是正确的,有 1 小时的差异

SELECT '2018-03-01'::TIMESTAMPTZ - '2018-09-01'::TIMESTAMPTZ;

这是因为 2018-03-01::timestamptz+012018-09-01+02

通过这个查询自己看看

SELECT '2018-03-01'::TIMESTAMPTZ, '2018-09-01'::TIMESTAMPTZ

1 小时的差异很可能来自夏令时和时区随时间的变化。


一般来说,我总是会选择在我的系统中包含时区,以正确处理世界各地的时差,并避免因没有时区而可能出现的问题。客户端和服务器可能有不同的时区,这可能会导致问题。

关于postgresql - TIMESTAMP 与 TIMESTAMPTZ 取时差时的正确值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50498039/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com