PostgreSQL中的FROM_TZ等效项

时间:2020-02-28 18:29:47

标签: postgresql

如何将其转换为在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

1 个答案:

答案 0 :(得分:1)

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的时间戳,然后添加第二个如何进行时区转换。 / p>

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