Agora que você tem dados armazenados em UTC, pode consultá-los e exibi-los em qualquer fuso horário que precisar. Nesta etapa, você usará a função EXTRACT e a cláusula AT TIME ZONE para manipular e formatar seus timestamps.
Etapa 1: Extrair Partes de um Timestamp com EXTRACT
A função EXTRACT permite extrair componentes específicos (como ano, mês, hora) de um timestamp. Vamos obter o ano de cada evento.
SELECT event_name, EXTRACT(YEAR FROM event_time) AS event_year FROM events;
A consulta extrai o ano do timestamp UTC armazenado.
event_name | event_year
-------------------+------------
Conference Call | 2024
Project Meeting | 2024
Follow-up Meeting | 2024
(3 rows)
Etapa 2: Converter Timestamps com AT TIME ZONE
Para visualizar o horário UTC armazenado em um fuso horário local específico, use a cláusula AT TIME ZONE. Vamos converter todos os horários de eventos de volta para o fuso horário America/Los_Angeles.
SELECT event_name, event_time AT TIME ZONE 'America/Los_Angeles' AS los_angeles_time FROM events;
Esta consulta pega o event_time UTC e exibe seu horário local equivalente em Los Angeles.
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)
Como você pode ver, a 'Project Meeting', que ocorreu às 18:00:00 UTC, é corretamente exibida como 10:00:00 no horário de Los Angeles.
Etapa 3: Combinar EXTRACT e AT TIME ZONE
Você pode combinar esses recursos para consultas mais poderosas. Por exemplo, para encontrar a hora de cada evento como ocorreu no fuso horário Europe/London:
SELECT event_name, EXTRACT(HOUR FROM event_time AT TIME ZONE 'Europe/London') AS event_hour_london FROM events;
Esta consulta primeiro converte o horário para o fuso horário de Londres e, em seguida, extrai a hora.
event_name | event_hour_london
-------------------+-------------------
Conference Call | 18
Project Meeting | 18
Follow-up Meeting | 20
(3 rows)