如何将其转换为在PostgreSQL中工作?
TO_CHAR(CAST(FROM_TZ(CAST(columnname AS TIMESTAMP), 'GMT') AT TIME ZONE 'US/Eastern' AS DATE),'MM/DD/YY HH:MI AM') AS dt
testdb=# select TO_CHAR(CAST('2020-02-28T18:43' AS TIMESTAMP) AT TIME ZONE 'UTC' AT TIME ZONE 'US/Eastern','MM/DD/YY HH:MI AM') as dt;
dt
-------------------
02/28/20 01:43 PM
(1 row)
[为了清楚说明正在发生的事情,我们将从对TIMESTAMP的转换开始,表明添加第一个AT TIME ZONE
使其成为可感知tz的时间戳,然后添加第二个如何进行时区转换。
testdb=# select CAST('2020-02-28T18:43' AS TIMESTAMP), testdb-# CAST('2020-02-28T18:43' AS TIMESTAMP) AT TIME ZONE 'GMT', testdb-# CAST('2020-02-28T18:43' AS TIMESTAMP) AT TIME ZONE 'GMT' AT TIME ZONE 'US/Eastern'; timestamp | timezone | timezone ---------------------+------------------------+--------------------- 2020-02-28 18:43:00 | 2020-02-28 18:43:00+00 | 2020-02-28 13:43:00 (1 row)
请参阅timezone conversion docs了解更多详细信息。