我试过得到现在的时间。这就是我运行的代码:
SELECT to_char(clock_timestamp() AT TIME ZONE 'UTC' AT TIME ZONE 'Asia/Jakarta', 'YYYY-MM-DD HH24:MI:SS') AS clock_timestamp
但这是我得到的,与实际时间不同: 2022-06-15 19:51:46。
参考见附图。示例
我也附加了时区,但显示的时间不对。有人想办法解决这个问题吗?
发布于 2022-06-16 04:18:02
clock_timestamp()函数已经返回带有时区的时间戳。没有必要在您的SELECT
语句中转换为UTC。
更详细的解释可以在AT TIME ZONE
操作符在https://www.postgresql.org/docs/current/functions-datetime.html#FUNCTIONS-DATETIME-ZONECONVERT的文档中找到。
当您在带有时区的时间戳上使用AT TIME ZONE
运算符时,结果类型是没有时区的时间戳(根据文档)。通过添加第二个AT TIME ZONE
操作符,您可以获得一个没有时区的时间戳,并使它成为一个带有时区的时间戳。在这种双重转换中,您会丢失,然后添加时区,但是偏移量的计算与您所认为的相反。实际上,您所做的是减去时区偏移,而不是添加时区偏移,这就是为什么雅加达看起来落后于UTC,而它应该领先。
顺便提一下,您确定您真的想使用clock_timestamp()而不是current_timestamp()吗?
https://stackoverflow.com/questions/72639935
复制相似问题