Соответствующее местное время UT C времени - PullRequest
3 голосов
/ 15 января 2020

У меня есть набор UT C раз:

UTC_date
-------------------
2015-10-24 16:38:46
2016-01-19 18:27:00
2016-01-24 16:14:34
2016-02-09 23:05:49
2016-02-11 20:46:26

Я хочу знать соответствующее местное время этих времен, я нахожусь в часовом поясе CDT, который должен быть на 5 или 6 часов позже UT C. Вот результат, который мне нужен:

UTC_date                         CDT_date
------------------------------------------------
2015-10-24 16:38:46             2015-10-24 11:38:46
2016-01-19 18:27:00             2016-01-19 12:27:00
2016-01-24 16:14:34             2016-01-24 11:14:34
2016-02-09 23:05:49             2016-02-09 18:05:49
2016-02-11 20:46:26             2016-02-11 15:46:26

Я пробовал UTC_date :: timestamp AT часовой пояс 'CDT', но это будет работать противоположным образом. Какой запрос PostgreSQL я мог бы использовать?

1 Ответ

1 голос
/ 15 января 2020

Предполагая, что utc_date - это отметка времени без часового пояса, вы можете сделать:

select 
    utc_date, 
    utc_date at time zone 'utc' at time zone 'cdt' cdt_date 
from mytable

Лог c должен сначала указать Postgres, что отметка времени находится в utc, а затем переведите его в целевой часовой пояс.

Демонстрация на DB Fiddle :

utc_date            | cdt_date           
:------------------ | :------------------
2015-10-24 16:38:46 | 2015-10-24 11:38:46
2016-01-19 18:27:00 | 2016-01-19 13:27:00
2016-01-24 16:14:34 | 2016-01-24 11:14:34
2016-02-09 23:05:49 | 2016-02-09 18:05:49
2016-02-11 20:46:26 | 2016-02-11 15:46:26
...