Postgresql to_char timestamp mit TimeZone

Postgresql to_char timestamp mit TimeZone

PostgreSQL-Formatierungsmethoden enthalten eine nützliche Sammlung von Tools zum Übersetzen verschiedener Datentypen (Datum/Uhrzeit, ganzzahliger, Gleitkomma, numerisch) in formatierte Zeichenfolgen und die Übersetzung formatierter Zeichenfolgen in eindeutige Datentypen. Von nun an müssen wir manchmal auch Zeitzonen konvertieren. Das Timing wird immer in UTC in PostgreSQL -Zeitstempel für Zeitzonendatenform erfasst, wird jedoch standardmäßig in Browser, Sitzung oder lokaler Zeit des Benutzers angezeigt. Eine seiner Helferfunktionen, auf die wir uns verlassen haben, ist die Methode to_char (), mit der Zeitstempel und Zeitstempel mit TimeZone unter anderem ermöglicht werden können, und ermöglicht es Ihnen, die Teile eines Zeitstempels anzuordnen, wie Sie möchten. Ein Zeitstempel, eine doppelte Präzision, die Dauer, eine Zahl oder ein numerischer Wert können alle unter Verwendung der PostgreSQL to_char () -Methode in eine Zeichenfolge konvertiert werden. Es scheint eine Einzelargument-Methode zu geben, 'timestamp', die ein Argument mit doppelter Präzision aufweist und mit der Zeitzone von der Unix-Epoche zum Zeitstempel verwandelt wird. Wir zeigen Ihnen, wie Sie in diesem Beitrag etwas dagegen tun können. Schauen wir uns zuerst einen genaueren Blick auf to_char () an.

Syntax:

Die allgemeine Syntax für die Funktion to_char () lautet wie folgt:

>> to_char (Ausdruck, Format);

Die Methode to_char () in PostgreSQL benötigt zwei Behauptungen:

  • Ausdruck: Ein Zeitstempel, eine Dauer, eine Zahl, eine doppelte Präzision oder ein numerischer Wert, der nach einem bestimmten Format in eine Zeichenfolge übersetzt wird.
  • Format: Der Stil, in dem die Ausgangszeichenfolge angezeigt wird. Das Format kann je nach Expressionstyp, e.G., Nummer, Datum.

In Postgresql sind zwei Zeitstempelstypen verfügbar:

  • Zeitstempel: ohne Zeitzone.
  • Timestamptz: mit TimeZone.

Und hier ist das Problem: Das Standardform des Standard -Zeitstempeldatenformulars ist unwissend über Zeitzonen. Und es ist eine SQL -Notwendigkeit (wie es hätte auftreten können, scheint darüber hinaus). Unser Hauptaugenmerk liegt darauf, mit einer Zeitzone den Zeitstempel zu lernen. Um mit der Funktion 'to_char ()' an der PostgreSQL mit der Funktion 'to_char ()' zu beginnen. Lassen Sie diese Überlegungen nicht gefüllt, wenn Sie die Standardparameter konsumieren müssen, wie im folgenden Bild gezeigt.

To_char () für die Zeichenfolgennummer

Um das Konzept der Funktion to_char () mit Timestamp mit TimeZone zu verstehen. Wir haben also eine Nummer '1897' und werden sie in die '9999 umwandeln.99 'Format mit der folgenden Abfrage. Aus der folgenden Ausgabe können Sie feststellen, dass die Zeichenfolgennummer in das angegebene Format konvertiert wurde.

>> Wählen Sie to_char (1897, '9999.99 ');

Hier ist eine weitere Illustration für die Konvertierung. Dieses Mal haben wir eine Zahl in ein anderes Format mit einem „Komma“ umgewandelt. Das Charakter 'G' wird verwendet, um ein Komma anzugeben.

>> Wählen Sie to_char (367.78, '9g999.99 ');

To_char Timestamp mit TimeZone

Um den Zeitstempel mit TimeZone -Konzept zu verstehen, sollten wir uns ein einfaches Beispiel in Betracht ziehen. Angenommen, Sie sind in 'Pakistan', also muss deine Zeitzone jetzt 'pkt' sein.

Beispiel 01:

Lassen Sie uns versuchen, den aktuellen Zeitstempel in der Abfrage auszuwählen, während Sie ihn zum Datum-Zeit-Format konvertieren, wie in der folgenden Abfrage gezeigt. Der Begriff "Tz" wird verwendet, um die aktuelle Zeitzone zurückzugeben. Die Ausgabe zeigt Tag, Datum, Uhrzeit und Zeitzone an.

>> Wählen Sie to_char (current_timestamp, 'tag mon dd, yjyy hh12: mi am (tz)');

Lassen Sie uns unsere Zeitzone in "Europa/Rom" ändern.

>> TimeZone = 'Europa/Rom' setzen;

Sie erhalten eine andere Zeit, Datum und Zeitzone, wenn Sie dieselbe Auswahlabfrage ausprobieren, wie gezeigt.

Beispiel 02:

Wenn Sie die Zeitzone in der Abfrage auswählen.

>> Wählen Sie to_char (current_timestamp at time zone 'asia/jerusalem', 'yyyy hh12: mi am (tz)');

Beispiel 03:

Erstellen wir eine kurze Tabelle mit dem Namen "Zeit" mit zwei Feldern. Einer hat einen Zeitstempelentyp, und der andere ist timestamptz -Typ.

>> TABLE -Zeit erstellen (ohne TimeZone Timestamp, mit dem Timezone TimestAmptz);

Überprüfen Sie nun die aktuelle Zeitzone, die wir in unserem System mit dem Befehl show in der Shell wie folgt verwendet haben:

>> Zeitzone zeigen;

Jetzt müssen Sie die aktuellen Werte des Datums und der Uhrzeit der aktuellen Zeitzone einfügen, die Sie auf Ihrem Gerät in der Tabelle "Uhrzeit" verwendet haben.

>> in Zeitwerte einfügen (jetzt (), jetzt ());

Jetzt können Sie den Datensatz aus der Tabelle "Zeit" mit der folgenden Abfrage auswählen. Die Spalte 'ohne_timezone' zeigt das aktuelle Datum und die aktuelle Uhrzeit ohne Zeitzone, während die Spalte 'mit_timezone' die lokale Zeit mit der TimeZone vollständig zeigt.

>> aus der Zeit auswählen;

Wechseln Sie die Zeitzone in "US/Eastern" aus der folgenden Abfrage in "US/Eastern".

>> Sitzungszeitzone 'US/Eastern' festlegen;

Jetzt überprüfen wir den Tisch erneut. Sie werden sehen.

>> aus der Zeit auswählen;

Beispiel 04:

Lassen Sie uns weitere Beispiele für die Methode to_char () haben. Nehmen Sie dasselbe über Tabelle 'Zeit' an. Wir werden den Spalte 'ohne_timezone' in eine Zeichenfolge konvertieren, die aus Stunden, Minuten, Sekunden und Zeitzone besteht. Versuchen wir die Abfrage mit der Methode to_char () zum Konvertieren des Spaltenwerts 'ohne_timezone' aus auswählen. Wir haben 'TZ' in unserer Abfrage erwähnt, aber es wird die Zeitzone nicht zeigen, da der Spaltenwert nicht aus der Zeitzone besteht. Der Befehl mit angegebenem Gelob gibt die Ausgabe:

>> SELECT TO_CHAR (ohne timezone, 'hh12: mi: ss Tz') ab Zeit;

Versuchen wir nun die gleiche Abfrage im Fall der anderen Spalte 'With_timeZone', um sie in die Reihe von Stunden, Minuten, Sekunden und Zeitzone umzuwandeln. Diesmal wird die Zeitzone mit der Zeit mit der folgenden Abfrage angezeigt.

>> SELECT TO_CHAR (mit timezone, 'HH12: mi: ss TZ') ab Zeit;

Abschluss:

Da das Problem mit/ohne Zeitzonenproblem mehr als nur Tabellenpartitionierung betrifft, empfehle ich, den Zeitzonentyp zu verwenden, wann immer dies praktikabel ist. Fast alle Richtlinien wurden diskutiert. Eine ordnungsgemäße, zeitzonenempfindliche Lösung fügt wenig Komplikationen hinzu, kann aber in Zukunft Probleme vor Ärger ersparen.