FROM_TZ эквивалент в PostgreSQL - PullRequest
       1

FROM_TZ эквивалент в PostgreSQL

0 голосов
/ 28 февраля 2020

Как я могу преобразовать это для работы в 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 Ответ

1 голос
/ 28 февраля 2020
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, а затем, как 2-й выполняет преобразование часового пояса.

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)

Подробнее см. В документах по часовому поясу .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...