Преобразование метки времени без столбца часового пояса в указанное значение часового пояса - PullRequest
0 голосов
/ 24 апреля 2020

У меня есть два столбца в таблице:

  1. ordered_at TIMESTAMP БЕЗ ЗОНЫ ВРЕМЕНИ
  2. timezone text

Необходимо преобразовать order_at от значения столбца к указанному значению часового пояса, присутствующего в поле часового пояса.

Я просмотрел блоги / документацию и нашел решение для преобразования временной метки без столбца часового пояса в локальный часовой пояс, используя timestamptz, Попробовал ниже запрос, который правильно конвертирует дату, но не понял причину, почему она работает. Может кто-нибудь объяснить, пожалуйста.

select ((t.ordered_at::**timestamptz** at time zone 'utc' at time zone '+5:00')::timestamp without time zone) as ordered_at_after_conversion from table_name

Пример: Если значение order_at равно 2020-01-23 19:14:51, а часовой пояс равен -07: 00, ожидаемый результат равен '2020-01-23 12:14:51'

Если я не приведу поле order_at к timestamptz, я не получу ожидаемый результат. Результат запроса: '2020-01-24 02: 14: 51'

Итак, мы не поняли, почему нам нужно преобразовать поле метки времени без часового пояса в метку времени с часовым поясом (используя timestamptz) до преобразование его в указанное значение часового пояса. И почему "в часовом поясе" UT C "требуется?

Ценю ваш ответ по этому вопросу.

...