【发布时间】:2021-11-30 09:41:16
【问题描述】:
我有 GMT 时区的数据。我想将它们转换并显示在'America/New_York'。
这是我使用的代码:
(d.start_time) AT TIME ZONE 'America/New_York'
它返回假设2021-10-25T09:30:00.000Z。
9:30 是正确的时间。但为什么是 UTC 时区时间戳而不是 'America/New_York'?
我尝试了with/without time zone 和::timestamp/::timestamptz 的各种变体,但我可能不明白这里的一些非常基本的东西......
我应该做些什么不同的事情才能使它成为'America/New_York' 时区中有效的上午 9:30 时间戳?
【问题讨论】:
-
d.start_time的类型是什么?d.start_time在没有时区转换的情况下返回什么?TimeZone设置为什么(SHOW TimeZone)? -
PostgreSQL 没有在其中放置“Z”。要么您使用的是 PostgreSQL 的非标准变体,要么您的连接库对您不利。
-
@jjanes 我明白了。我的“工具”真的有点不标准。但我必须使用它。我仍然可以将它解析为我想要的任何格式的字符串。那么正确的 Postgres 时间戳字符串应该是什么样子的呢?
-
@AdrianKlaver d.start_time 没有时区转换返回完全相同的格式,只是时间不同。我设置了 UTC 时区。但似乎我无法在我的工具中更改它。
-
这似乎是
Retool的客户端问题。作为@jjanes,提到您显示的时间戳格式不是来自 Postgres。你在使用date time picker组件吗?如果是这样,您可能想在这里查看 Date time picker 并查看useLocalTimezone的设置。
标签: postgresql