Nachdem Sie Daten in UTC gespeichert haben, können Sie diese abfragen und in jeder gewünschten Zeitzone anzeigen. In diesem Schritt verwenden Sie die Funktion EXTRACT und die Klausel AT TIME ZONE, um Ihre Zeitstempel zu manipulieren und zu formatieren.
Schritt 1: Extrahieren von Teilen eines Zeitstempels mit EXTRACT
Die Funktion EXTRACT ermöglicht es Ihnen, bestimmte Komponenten (wie Jahr, Monat, Stunde) aus einem Zeitstempel zu extrahieren. Holen wir uns das Jahr für jedes Event.
SELECT event_name, EXTRACT(YEAR FROM event_time) AS event_year FROM events;
Die Abfrage extrahiert das Jahr aus dem gespeicherten UTC-Zeitstempel.
event_name | event_year
-------------------+------------
Conference Call | 2024
Project Meeting | 2024
Follow-up Meeting | 2024
(3 rows)
Schritt 2: Zeitstempel mit AT TIME ZONE konvertieren
Um die gespeicherte UTC-Zeit in einer bestimmten lokalen Zeitzone anzuzeigen, verwenden Sie die Klausel AT TIME ZONE. Konvertieren wir alle Event-Zeiten zurück in die Zeitzone America/Los_Angeles.
SELECT event_name, event_time AT TIME ZONE 'America/Los_Angeles' AS los_angeles_time FROM events;
Diese Abfrage nimmt die UTC event_time und zeigt ihre entsprechende lokale Zeit in Los Angeles an.
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)
Wie Sie sehen können, wird das 'Project Meeting', das um 18:00:00 UTC stattfand, korrekt als 10:00:00 in der Zeit von Los Angeles angezeigt.
Schritt 3: Kombinieren von EXTRACT und AT TIME ZONE
Sie können diese Funktionen für leistungsfähigere Abfragen kombinieren. Um beispielsweise die Stunde jedes Events anzuzeigen, wie sie in der Zeitzone Europe/London aufgetreten ist:
SELECT event_name, EXTRACT(HOUR FROM event_time AT TIME ZONE 'Europe/London') AS event_hour_london FROM events;
Diese Abfrage konvertiert zuerst die Zeit in die Londoner Zeitzone und extrahiert dann die Stunde.
event_name | event_hour_london
-------------------+-------------------
Conference Call | 18
Project Meeting | 18
Follow-up Meeting | 20
(3 rows)