Запрос и форматирование временных меток
Теперь, когда у вас есть данные, хранящиеся в UTC, вы можете запрашивать их и отображать в любом нужном вам часовом поясе. На этом шаге вы будете использовать функцию EXTRACT и предложение AT TIME ZONE для манипулирования и форматирования ваших временных меток.
Шаг 1: Извлечение частей временной метки с помощью EXTRACT
Функция EXTRACT позволяет извлекать определенные компоненты (например, год, месяц, час) из временной метки. Давайте получим год для каждого события.
SELECT event_name, EXTRACT(YEAR FROM event_time) AS event_year FROM events;
Запрос извлекает год из сохраненной временной метки UTC.
event_name | event_year
-------------------+------------
Conference Call | 2024
Project Meeting | 2024
Follow-up Meeting | 2024
(3 rows)
Шаг 2: Преобразование временных меток с помощью AT TIME ZONE
Чтобы просмотреть сохраненное время UTC в определенном местном часовом поясе, используйте предложение AT TIME ZONE. Давайте преобразуем все времена событий обратно в часовой пояс America/Los_Angeles.
SELECT event_name, event_time AT TIME ZONE 'America/Los_Angeles' AS los_angeles_time FROM events;
Этот запрос берет event_time в UTC и отображает его эквивалентное местное время в Лос-Анджелесе.
event_name | los_angeles_time
-------------------+---------------------
Conference Call | 2024-01-20 10:00:00
Project Meeting | 2024-01-20 10:00:00
Follow-up Meeting | 2024-01-21 12:00:00
(3 rows)
Как вы можете видеть, 'Project Meeting', которое произошло в 18:00:00 UTC, правильно отображается как 10:00:00 по времени Лос-Анджелеса.
Шаг 3: Объединение EXTRACT и AT TIME ZONE
Вы можете объединить эти функции для более мощных запросов. Например, чтобы найти час каждого события, как оно произошло в часовом поясе Europe/London:
SELECT event_name, EXTRACT(HOUR FROM event_time AT TIME ZONE 'Europe/London') AS event_hour_london FROM events;
Этот запрос сначала преобразует время в лондонский часовой пояс, а затем извлекает час.
event_name | event_hour_london
-------------------+-------------------
Conference Call | 18
Project Meeting | 18
Follow-up Meeting | 20
(3 rows)