У меня есть два столбца в таблице:
ordered_at
TIMESTAMP БЕЗ ЗОНЫ ВРЕМЕНИ 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 "требуется?
Ценю ваш ответ по этому вопросу.