PostgreSQL

PostgreSQL To_char-Zeitstempel mit Zeitzone

PostgreSQL To_char-Zeitstempel mit Zeitzone

PostgreSQL-Formatierungsmethoden umfassen eine nützliche Sammlung von Tools zum Übersetzen verschiedener Datentypen (Datum/Uhrzeit, Integer, Gleitkomma, numerisch) in formatierte Strings und zum Zurückübersetzen formatierter Strings in eindeutige Datentypen. Von nun an müssen wir manchmal auch Zeitzonen umstellen. Das Timing wird immer in UTC in PostgreSQL-Zeitstempeln für das Zeitzonendatenformular aufgezeichnet, wird jedoch standardmäßig im Browser, in der Sitzung oder in der Ortszeit des Benutzers angezeigt. Eine der Hilfsfunktionen, auf die wir uns verlassen haben, ist die Methode TO_CHAR(), die unter anderem Zeitstempel und Zeitstempel mit Zeitzone zulässt und es Ihnen ermöglicht, die Teile eines Zeitstempels nach Belieben anzuordnen. Ein Zeitstempel, eine doppelte Genauigkeit, die Dauer, eine Zahl oder ein numerischer Wert können alle mit der PostgreSQL TO_CHAR()-Methode in einen String umgewandelt werden. Es scheint eine Methode mit nur einem Argument zu geben, 'to_timestamp', die ein Argument mit doppelter Genauigkeit verwendet und mit Zeitzone von der Unix-Epoche in einen Zeitstempel transformiert. Wir zeigen dir in diesem Beitrag, wie du etwas dagegen tun kannst. Schauen wir uns zuerst to_char() genauer 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 Assertionen:

In PostgreSQL stehen zwei Zeitstempeltypen zur Verfügung:

Und hier ist das Problem: Das Standardformular für Zeitstempeldaten kennt keine Zeitzonen. Und es ist eine SQL-Notwendigkeit (wie es hätte passieren können, scheint darüber hinauszugehen). Unser Hauptaugenmerk liegt darauf, den to_Char()-Zeitstempel mit einer Zeitzone zu lernen. Um mit der Arbeit an PostgreSQL mit der Funktion 'to_char()' zu beginnen, öffnen Sie die PostgreSQL-Befehlszeilen-Shell und übergeben Sie die Parameterwerte für den obligatorischen Server, die Datenbank, die Portnummer, den Benutzernamen und das Passwort. Lassen Sie diese Überlegungen unbeantwortet, wenn Sie die standardmäßig festgelegten Parameter verwenden müssen, wie in der folgenden Abbildung gezeigt.

To_char() Für String-Nummer

Um das Konzept der to_Char()-Funktion zu verstehen, die Zeitstempel mit Zeitzone verwendet, müssen Sie zuerst das Beispiel der Zeichenfolgennummern ausprobieren. Wir haben also eine Nummer '1897' und werden sie in '9999 umwandeln.99'-Format mit der folgenden Abfrage. An der Ausgabe unten können Sie sehen, dass die Stringnummer in das angegebene Format konvertiert wurde.

>> SELECT 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 'Komma' umgewandelt. Das Zeichen 'G' wird verwendet, um ein Komma anzugeben.

>> SELECT to_char(367.78, '9G999.99');

To_char Zeitstempel mit TimeZone

Um das Konzept Zeitstempel mit Zeitzone zu verstehen, betrachten wir ein einfaches Beispiel. Angenommen, Sie befinden sich in 'Pakistan', also muss Ihre Zeitzone jetzt 'PKT' sein.

Beispiel 01:

Versuchen wir, den aktuellen Zeitstempel in der SELECT-Abfrage abzurufen, während Sie ihn in das Datum-Uhrzeit-Format konvertieren, wie in der Abfrage unten gezeigt query. Der Begriff 'TZ' wird verwendet, um die aktuelle Zeitzone zurückzugeben. Die Ausgabe zeigt Tag, Datum, Uhrzeit und Zeitzone an.

>> SELECT to_char(CURRENT_TIMESTAMP, 'Tag Mo dd, yyyy HH12:MI AM (TZ)');

Ändern wir unsere Zeitzone in 'Europa/Rom'.

>> SET TimeZone= 'Europa/Rom';

Sie erhalten eine andere Uhrzeit, ein anderes Datum und eine andere Zeitzone, wenn Sie dieselbe SELECT-Abfrage versuchen, wie gezeigt.

Beispiel 02:

Wenn Sie die Zeitzone in der SELECT-Abfrage angeben, zeigt die Ausgabe nicht die aktuelle Zeitzone gemäß der folgenden Ausgabe an.

>> SELECT to_char(CURRENT_TIMESTAMP AT TIME ZONE 'Asien/Jerusalem', 'yyyy HH12:MI AM (TZ)');

Beispiel 03:

Lassen Sie uns eine schnelle Tabelle namens 'time' mit zwei Feldern erstellen create. Einer vom Typ TIMESTAMP und der andere vom Typ TIMESTAMPTZTZ.

>> CREATE TABLE time (ohne_timezone TIMESTAMP, with_timezone TIMESTAMPTZ);

Lassen Sie uns nun die aktuelle Zeitzone, die wir in unserem System verwendet haben, mit dem SHOW-Befehl in der Shell wie folgt überprüfen:

>> Zeitzone ANZEIGEN;

Jetzt müssen Sie die aktuellen Werte von Datum und Uhrzeit der aktuellen Zeitzone, die Sie auf Ihrem Gerät verwendet haben, in die Tabelle 'time' einfügen, indem Sie die 'now()'-Funktion wie unten gezeigt verwenden.

>> INSERT INTO time VALUES( now(), now());

Jetzt können Sie den Datensatz mit der SELECT-Abfrage wie unten aus der Tabelle 'time' abrufen. Die Spalte 'ohne_Zeitzone' zeigt das aktuelle Datum und die aktuelle Uhrzeit ohne Zeitzone, während die Spalte 'mit_Zeitzone' die lokale Zeit mit der Zeitzone vollständig anzeigt.

>> AUSWÄHLEN * VON Zeit;

Lassen Sie uns die Zeitzone aus der folgenden Abfrage in "US/EASTERN" ändern.

>> EINSTELLEN DER ZEITZONE DER SITZUNG 'US/EASTERN';

Sehen wir uns jetzt noch einmal die Tabelle an. Sie werden sehen, wie der Wert der Spalte 'with_timezone' entsprechend der Zeitzone 'US/EASTERN' angezeigt wurde, aber der Wert von 'ohne_timezone' ist derselbe wie zuvor.

>> AUSWÄHLEN * VON Zeit;

Beispiel 04:

Lassen Sie uns noch ein paar Beispiele für die to_char()-Methode haben. Nehmen Sie die gleiche obige Tabelle 'Zeit' an. Wir konvertieren den Wert der Spalte 'ohne_timezone' in eine Zeichenfolge, die aus Stunden, Minuten, Sekunden und Zeitzone besteht. Versuchen wir die SELECT-Abfrage mit der Methode to_char() zum Konvertieren des Spaltenwerts 'ohne_zeitzone'. Wir haben 'TZ' in unserer Abfrage erwähnt, aber die Zeitzone wird nicht angezeigt, da der Spaltenwert nicht aus der Zeitzone besteht. Der unten angegebene Befehl gibt die Ausgabe:

>> SELECT to_char(ohne_timezone, 'HH12:MI:SS TZ') FROM time;

Versuchen wir nun die gleiche Abfrage im Fall der anderen Spalte 'with_timezone', um sie in die Zeichenfolge von Stunden, Minuten, Sekunden und Zeitzone umzuwandeln. Dieses Mal wird auch die Zeitzone mit der Zeit angezeigt, indem Sie die folgende Abfrage verwenden.

>> SELECT to_char(with_timezone, 'HH12:MI:SS TZ') FROM time;

Fazit:

Da das Problem mit/ohne Zeitzone mehr als nur die Tabellenpartitionierung betrifft, empfehle ich Ihnen, wann immer möglich, den Zeitzonentyp zu verwenden. In fast allen Richtlinien wurde diskutiert, wie man zeitabhängiges Bereinigen in PostgreSQL unter Verwendung lokaler Stunden durchführt. Eine richtige, zeitzonenabhängige Lösung fügt wenig Komplikationen hinzu, könnte Sie aber in Zukunft vor Ärger bewahren.

Emulieren Sie Mausklicks, indem Sie den Mauszeiger mit der klicklosen Maus in Windows 10 bewegen
Die Verwendung einer Maus oder Tastatur in der falschen Haltung bei übermäßiger Nutzung kann zu vielen gesundheitlichen Problemen führen, einschließli...
Fügen Sie mit diesen kostenlosen Tools Mausgesten zu Windows 10 hinzu
In den letzten Jahren haben sich Computer und Betriebssysteme stark weiterentwickelt. Es gab eine Zeit, in der Benutzer Befehle verwenden mussten, um ...
Steuern und verwalten Sie Mausbewegungen zwischen mehreren Monitoren in Windows 10
Dual-Display-Maus-Manager lässt Sie die Mausbewegung zwischen mehreren Monitoren steuern und konfigurieren, indem Sie ihre Bewegungen in der Nähe der ...