gpt4 book ai didi

postgresql - 在postgresql中转换时区的4种方式有什么区别

转载 作者:行者123 更新时间:2023-11-29 14:33:35 25 4
gpt4 key购买 nike

我不知道在 postgresql 中转换时区的 4 种方式有什么区别:

SELECT (timestamp '2018-01-20 00:00:00' at time zone 'Asia/Saigon') at time zone 'UTC';


SELECT CAST('2018-01-20 00:00:00' as timestamp without time zone) at time zone 'Asia/Saigon' at time zone 'UTC'


SELECT (TO_TIMESTAMP('2018-01-20 00:00:00', 'YYYY-MM-DD HH24:MI:SS') at time zone 'Asia/Saigon') at time zone 'UTC'


SELECT ('2018-01-20 00:00:00' at time zone 'Asia/Saigon') at time zone 'UTC';

结果不同。为什么?

最佳答案

前两个语句做同样的事情。

区别在于创建timestamp without time zone类型常量的方式不同,但两种情况下的结果是相同的。

第三条语句使用 to_timestamp 创建一个 timestamp with time zone,其中字符串在您的 session 时区中解释。然后将其转换为不带时区的时间戳,如西贡的挂钟所示,然后转换为带时区的时间戳,假设挂钟被传送到 UTC .

第四条语句与第三条语句的作用相同,因为字符串被隐式转换为timestamp with time zone。这里有一个歧义,因为 AT TIME ZONE 也可以应用于 timestamp without time zone,但如果有疑问,它的首选类型使用类别,即 timestamp with time zone

关于postgresql - 在postgresql中转换时区的4种方式有什么区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48199490/

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