Konvertieren Sie die Zeitzone in PostgreSQL Server

Bilal Shahid 15 Februar 2024
  1. Konvertieren Sie die Zeitzone in PostgreSQL Server
  2. Die Funktion timezone() und ihre Verwendung zum Konvertieren der Zeitzone
  3. Verwenden Sie SQL-Abfragen, um Zeitstempelwerte in verschiedene Zeitzonen zu konvertieren
  4. Wichtige SQL-Anweisungen zum Konvertieren der Zeitzone
Konvertieren Sie die Zeitzone in PostgreSQL Server

Möchten Sie die in Ihrer Tabelle gespeicherten Zeitstempelwerte in PostgreSQL in eine andere Zeitzone konvertieren? Dieser Artikel beschreibt ein Verfahren zum Konvertieren der gespeicherten Zeitstempelwerte in eine andere Zeitzone.

Konvertieren Sie die Zeitzone in PostgreSQL Server

Es gibt verschiedene Möglichkeiten, einen Zeitstempelwert in eine andere Zeitzone umzuwandeln. Es gibt zwei Möglichkeiten, die wir in diesem Artikel besprechen werden:

  1. Verwendung der Funktion timezone()
  2. Verwendung der SQL-Abfragen

Wir können jedem von ihnen folgen, um die Zeitstempel von einer Zeitzone in eine andere umzuwandeln.

Die Funktion timezone() und ihre Verwendung zum Konvertieren der Zeitzone

Der PostgreSQL-Server bietet zahlreiche Benutzerfunktionen, die ihnen helfen, Aufgaben schnell und effizient zu erledigen. Bevor wir jedoch die Funktion timezone() verwenden, wollen wir sie im Detail besprechen.

Die Funktion timezone() wird verwendet, um einen Zeitstempelwert in eine andere Zeitzone umzuwandeln. Die Syntax für die Funktion timezone() lautet wie folgt:

timezone(zone, timestamp)

Wie oben gezeigt, nimmt die Funktion timezone() zwei Argumente entgegen. Das erste Argument, zone, stellt die Zeitzone dar, in die Sie das Zeitstempel-Argument konvertieren möchten.

Das zweite Argument timestamp stellt den Zeitstempelwert dar, den Sie in eine andere Zeitzone konvertieren möchten.

Der Rückgabewert der Funktion timezone() variiert je nach Zeitstempelwert. Die Funktion gibt einen anderen Wert zurück, wenn der ursprüngliche Zeitstempelwert eine Zeitzone enthält.

Andererseits ist der zurückgegebene Wert anders, wenn der Zeitstempelwert DOES NOT eine Zeitzone hat. Lassen Sie es uns mit den folgenden Codebeispielen verstehen.

Beispielcodes mit Zeitstempel mit Zeitzone

Die Beispiele in diesem Abschnitt verwenden die Funktion timezone(), wobei das timestamp-Argument die Zeitzone enthält. Hier ist eine SQL-Anweisung in PostgreSQL:

SELECT timezone('PST', timestamp with time zone '2020-10-25 00:00:00+00');

Die Funktion timezone() konvertiert den im zweiten Argument angegebenen Zeitstempelwert in die im ersten Argument angegebene Zeitzone.

Der Rückgabewert ist ohne Zeitzone. Das Ergebnis der oben genannten Abfrage lautet also wie folgt:

Konvertieren Sie die Zeitzone auf dem Postgresql-Server - Bild eins

Dieses Beispiel ändert die Zeitzone des eingegebenen Zeitstempelwerts:

SELECT timezone('PST', timestamp with time zone '2020-10-25 00:00:00+01');

Ausgang:

Konvertieren Sie die Zeitzone auf dem Postgresql-Server - Bild zwei

Angenommen, Sie verwenden die Funktion timezone() mit dem Argument "timestamp with timezone" und geben die Zeitzone nicht mit dem timestamp an. Dann wird der ursprüngliche Zeitstempel im Argument in eine lokale Zeitzone konvertiert.

SELECT timezone('PST', timestamp with time zone '2020-10-25 00:00:00');

Ausgang:

Konvertieren Sie die Zeitzone auf dem Postgresql-Server - Bild drei

Wir können sehen, dass der zurückgegebene Zeitstempel 11 Stunden voraus ist, was bedeutet, dass meine lokale Zeitzone 11 Stunden hinter der Zeitzone PST liegt.

Wenn Sie den verwendeten Zeitzonen-Offset sehen möchten, führen Sie die folgende Abfrage aus:

SELECT timestamp with time zone '2020-10-25 00:00:00';

Ausgang:

Konvertieren Sie die Zeitzone auf dem Postgresql-Server - Bild vier

Beispielcodes mit Zeitstempel ohne Zeitzone

Wir können die gleichen Beispiele mit dem Argument “Zeitstempel ohne Zeitzone” ausführen. Das Ergebnis konvertiert den ursprünglichen Zeitstempel unter Verwendung der aktuellen Zeitzoneneinstellung, selbst wenn der Zeitstempel einen Zeitzonenversatz enthält.

Der Rückgabewert der Funktion enthält ein angehängtes Zeitzonen-Offset. Hier ist eine Abfrage in PostgreSQL, die keinen Zeitzonen-Offset enthält:

SELECT timezone('PST', timestamp without time zone '2020-10-25 00:00:00+00');

Das Ergebnis der oben genannten Abfrage lautet also wie folgt:

Konvertieren Sie die Zeitzone auf dem Postgresql-Server - Bild fünf

Das folgende Beispiel enthält einen Zeitzonen-Offset:

SELECT timezone('PST', timestamp without time zone '2020-10-25 00:00:00+12');

Das Ergebnis der obigen Abfrage ist das gleiche wie ein Ergebnis ohne Zeitzonenverschiebung:

Konvertieren Sie die Zeitzone auf dem Postgresql-Server - Bild fünf

Um das Konzept des Arguments "Zeitstempel ohne Zeitzone" zu verstehen, sehen Sie sich die folgende Abfrage an:

SELECT timestamp without time zone '2020-10-25 00:00:00+12';

Ausgang:

Konvertieren Sie die Zeitzone auf dem Postgresql-Server - Bild sechs

Hinweis: Die Funktion timezone() kann mit zahlreichen Argumenten verwendet werden. Versuchen Sie, die Funktion timezone() mit den Argumenten localtimestamp oder current_timestamp zu verwenden. Das Argument “Zeitstempel mit/ohne Zeitzone” kann auch mit Zeitwerten verwendet werden: “Zeit mit/ohne Zeitzone”.

Verwenden Sie SQL-Abfragen, um Zeitstempelwerte in verschiedene Zeitzonen zu konvertieren

Hier besprechen wir einige SQL-Anweisungen, die wir in PostgreSQL ausführen können, um die Zeitstempelwerte ohne Funktion in eine andere Zeitzone zu konvertieren.

Die erste Abfrage wählt einen Zeitstempel und eine Zeitzone aus. Die Konvertierung mit einer SQL-Anweisung ist unten dargestellt:

SELECT (timestamp'2020-10-25 00:00:00') AT TIME ZONE 'PST';

Ausgang:

Konvertieren Sie die Zeitzone auf dem Postgresql-Server - Bild sieben

Hinweis: Sie können die Abfragen mit jeder gewünschten Zeitzone ausführen. Der Einfachheit halber ist die im gesamten Artikel verwendete Zeitzone PST.

Hier ist eine verallgemeinerte Abfrage zum Konvertieren von Zeitstempelwerten in eine andere Zeitzone:

SELECT ((stored_timestamp AT TIME ZONE 'UTC') AT TIME ZONE 'PST') AS local_timestamp FROM my_table;

Um die Abfrage einfacher zu erklären, können Sie ein stored_timestamp-Attribut aus einer Tabelle namens my_table in PostgreSQL auswählen.

Die Zeitzone stored_timestamp wird daneben bereitgestellt, und die folgende Zeitzone stellt die Zeitzone dar, in die Sie den Zeitstempel konvertieren möchten. Das Ergebnis wird local_timestamp genannt.

Eine weitere Anweisung, die einen Zeitstempelwert in eine andere Zeitzone umwandelt, lautet wie folgt:

SELECT '2020-10-25 00:00:00'::timestamp AT time zone 'PST';

Es erzeugt das gleiche Ergebnis wie Abfrage 1:

Konvertieren Sie die Zeitzone auf dem Postgresql-Server - Bild sieben

Die folgende Abfrage ist eine Alternative zu den oben genannten Abfragen. Wenn Sie sich Ihrer Zeitzone nicht sicher sind, können Sie den Zeitstempel mithilfe eines Zonenintervalls in diese Zeitzone konvertieren.

Hinweis: Die folgende Abfrage zeigt nicht das Zonenintervall von PST.

SELECT '2020-10-25 00:00:00' :: timestamp AT time zone INTERVAL'+08:30';

Der empfangene Zeitstempel für das Zonenintervall "+08:30" lautet wie folgt:

Konvertieren Sie die Zeitzone auf dem Postgresql-Server - Bild acht

Wichtige SQL-Anweisungen zum Konvertieren der Zeitzone

Um Ihnen dabei zu helfen, einen Zeitstempelwert in einen anderen Zeitzonenwert umzuwandeln, finden Sie hier zwei grundlegende SQL-Anweisungen, die Sie in PostgreSQL verwenden können.

Die folgende Anweisung gibt Ihre aktuelle Zeitzone zurück. Wenn Sie sich Ihrer Zeitzone nicht sicher sind, führen Sie daher diese Anweisung aus:

SHOW timezone;

Wenn Sie daran interessiert sind, einen Blick auf die verschiedenen Zeitzonen zu werfen, die der PostgreSQL-Server unterstützt, verwenden Sie die folgende Anweisung:

SELECT * FROM pg_timezone_names;

Das Konvertieren eines Zeitstempelwerts in eine andere Zeitzone ist also keine schwierige Aufgabe. Einfache SQL-Anweisungen in PostgreSQL können Ihnen dabei helfen, den Zeitstempelwert in eine Zeitzone Ihrer Wahl umzuwandeln.

Bilal Shahid avatar Bilal Shahid avatar

Hello, I am Bilal, a research enthusiast who tends to break and make code from scratch. I dwell deep into the latest issues faced by the developer community and provide answers and different solutions. Apart from that, I am just another normal developer with a laptop, a mug of coffee, some biscuits and a thick spectacle!

GitHub