Ahora que tiene datos almacenados en UTC, puede consultarlos y mostrarlos en cualquier zona horaria que necesite. En este paso, utilizará la función EXTRACT y la cláusula AT TIME ZONE para manipular y formatear sus marcas de tiempo.
Paso 1: Extraer Partes de una Marca de Tiempo con EXTRACT
La función EXTRACT le permite extraer componentes específicos (como año, mes, hora) de una marca de tiempo. Obtengamos el año de cada evento.
SELECT event_name, EXTRACT(YEAR FROM event_time) AS event_year FROM events;
La consulta extrae el año de la marca de tiempo UTC almacenada.
event_name | event_year
-------------------+------------
Conference Call | 2024
Project Meeting | 2024
Follow-up Meeting | 2024
(3 rows)
Paso 2: Convertir Marcas de Tiempo con AT TIME ZONE
Para ver la hora UTC almacenada en una zona horaria local específica, utilice la cláusula AT TIME ZONE. Convirtamos todas las horas de los eventos de nuevo a la zona horaria America/Los_Angeles.
SELECT event_name, event_time AT TIME ZONE 'America/Los_Angeles' AS los_angeles_time FROM events;
Esta consulta toma la event_time UTC y muestra su hora local equivalente en Los Ángeles.
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 puede ver, la 'Project Meeting' que ocurrió a las 18:00:00 UTC se muestra correctamente como 10:00:00 en la hora de Los Ángeles.
Paso 3: Combinar EXTRACT y AT TIME ZONE
Puede combinar estas características para consultas más potentes. Por ejemplo, para encontrar la hora de cada evento tal como ocurrió en la zona horaria Europe/London:
SELECT event_name, EXTRACT(HOUR FROM event_time AT TIME ZONE 'Europe/London') AS event_hour_london FROM events;
Esta consulta primero convierte la hora a la zona horaria de Londres y luego extrae la hora.
event_name | event_hour_london
-------------------+-------------------
Conference Call | 18
Project Meeting | 18
Follow-up Meeting | 20
(3 rows)