Postgres-Zeitstempel

Einführung

In diesem Tutorial wird erläutert, wie Postgres-Zeitstempel erstellt und die Stempel in PostgreSQL-Tabellendatensätzen in der PSQL-Befehlszeilenschnittstelle verwendet werden. PostgreSQL ist sehr flexibel im Umgang mit Datum und Zeitstempel und ist in der Regel flexibler als Standard-SQL-Prozeduren erfordern. Der Artikel enthält Details zur Verwendung von PSQL zur Rückgabe gültiger ISO 8601-konformer Datums-und Zeitstempelzeichenfolgen, die in PostgreSQL-Tabellendaten verwendet werden können.,

Voraussetzungen

Postgres und die PSQL-Befehlszeilenschnittstelle müssen installiert sein und ordnungsgemäß funktionieren. Führen Sie den Befehl psql -V aus, um die aktuelle Versionsnummer zu erhalten. Alternativ kann der Befehl postgres -V verwendet werden, um die Versionsnummer der PostgreSQL-Datenbank abzurufen.

Verwenden Sie psql, um eine Verbindung zu einer Datenbank herzustellen

Eine Verbindung zur Schnittstelle über die Standardrolle postgres admin kann nur mit dem Befehl psql versucht werden., Es ist jedoch erforderlich, zum Benutzer postgres im Terminal zu wechseln (sudo -u postgres -i) und einen Benutzer zu erstellen, wenn eine Fehlermeldung angezeigt wird: FATAL: role "postgres" does not exist, erscheint., Sobald ein Postgres-Benutzer mit Rollenattributen eingerichtet ist, kann eine Verbindung zu einer PSQL-Datenbank hergestellt werden, wie im folgenden Beispiel gezeigt:

1
psql-U objectrocket-d some_db

HINWEIS: Stellen Sie sicher, dass objectrocket durch die Benutzerrolle und some_db durch den Namen der tatsächlich verwendeten Datenbank ersetzt wird.,

Postgres-Zeitstempel

Postgres-Zeitstempel – Datentypen können auf verschiedene Arten formatiert werden, einschließlich Zeichenfolgen, Ganzzahlen oder Gleitkomma-Datentypen.,

Holen Sie sich einen Zeitstempel der aktuellen Zeit

Der einfachste Weg, einen Zeitstempel zu erhalten, ist die Verwendung der folgenden NOW() Befehlsfunktion:

1
SELECT now();

Dies sollte eine vollständige Datums-und Zeitstempelzeichenfolge zurückgeben, die die aktuelle Postgres-Zeitzone enthält.,

PostgreSQL-Zeitzone

Bevor Sie Tabellen oder Datensätze mit Datums-und Zeitstempeln erstellen, stellen Sie zunächst sicher, dass die Zeitzone korrekt eingestellt ist.,ocal timestamp at a specific location:

1
SELECT LOCALTIMESTAMP AT TIME ZONE ‚Asia/Manila‘;

The command will return a value that resembles the below results with the UTC time zone included:

1
2
3
4
timezone
——————————-
2019-12-12 20:31:06.,997076-05
(1 ZEILE)

PostgreSQL Unix timestamp

Ein numerischer Zeitstempel ist am effizientesten, da er nicht von Benutzern oder Servern in verschiedenen Zeitzonen oder anderen zeitverändernden Ereignissen beeinflusst werden kann, z. B. von oder zu Sommerzeit in den Vereinigten Staaten., Die folgende SQL-Anweisung verwendet die Funktion PostgreSQL EXTRACT(), um einen Unix-Zeitstempel zurückzugeben:

1
SELECT EXTRACT(EPOCHE AB JETZT());

Der obige Befehl gibt einen Gleitkommawert mit doppelter Genauigkeit zurück, der die genaue Anzahl von Sekunden und Millisekunden darstellt, die seit dem 1.Januar 1970 vergangen sind, umgangssprachlich als Unix-Epochenzeit bekannt.,

Postgres Epoch to Timestamp

Verwenden Sie die Unix-Epoche mit doppelter Genauigkeit, um einen Zeitstempel mit der praktischen Postgres-Funktion TO_TIMESTAMP()zu erstellen. Diese Funktion akzeptiert eine Zeichenfolge wie geschriebene Monate und Tage als Argument und gibt einen ordnungsgemäß formatierten Zeitstempel mit der eingestellten Zeitzone am Ende des Ergebnisses zurück.,

Postgres TO_TIMESTAMP() Funktion

Es folgt die grundlegende Syntax für die TO_TIMESTAMP() Funktion:

1
TO_TIMESTAMP( { TIMESTAMP }, { STR_FORMAT } );

Das zweite Argument dient zum Formatieren der Zeichenfolge, sodass Postgres wissen, wie die Datumszeichenfolge interpretiert wird, die an sie übergeben wird., Wenn dieses Formatargument nicht mit der Datums-und Zeitzeichenfolge übereinstimmt, gibt PSQL einen invalid value – Fehler zurück.

Verwenden Sie das Schlüsselwort SELECT, damit die Funktion einen Wert zurückgibt.,wing-Befehl wird korrekt konvertiert den Integer 84, um die 4-stellige Jahr 1984:

1
2
WÄHLEN Sie
TO_TIMESTAMP(‚5 12 84 12‘, ‚MM-DD-YY HH‘);

Mit einer floating-point-Zahl, die für eine genaue festgelegten Zeit, verwenden Sie die Werte mit der Postgres TO_TIMESTAMP() Funktion format einer double-precision-Reihe in einem von Menschen lesbaren Zeitstempel.,

Convert epoch to timestamp

Der folgende SQL-Befehl verwendet die Funktionen to_char() und date(), um eine Zeichenfolge aus einer Float-Nummer mit Epochenpräzision umzuwandeln, sodass sie an die Funktion TO_TIMESTAMP() übergeben werden kann. Das liefert einen Zeitstempel wie folgt:

1
2
3
SELECT to_char(
DATE(TO_TIMESTAMP(1582410142.,222222)
), ‚JJJJ-MM-TT HH: mm‘);

Hinweis Der obige Befehl sollte einen Zeitstempel von 2020-02-22-12-02 zurückgeben, ohne die Zeitzone zu enthalten.

PostgreSQL to_timestamp mit Zeitzone

Include TZ am Ende des String-Arguments, damit die Zeitzone im Stempel enthalten ist.,

Das folgende Beispiel erzeugt einen Zeitstempel von einem epochalen Punkt, wie vorher, aber dieses Mal enthält es die Sekunden und die Postgres-Zeitzone, wie hier gezeigt:

1
2
3
WÄHLEN SIE to_char(
DATE(TO_TIMESTAMP(1582410142., system zurückkehren sollte einen Zeitstempel mit -06 steht für das GMT-6 Zeit-zone, wie gezeigt, am Ende die folgende Antwort:

1
2
3
4
to_char
————————
2020-02-22 12:02:00-06
(1 ZEILE)

Postgres timestamptz

Die timestamptz Datentyp in PostgreSQL ist im wesentlichen ein timestamp-Zeichenfolge mit einer Zeitzone attached to it., Wenn die betreffenden Datensätze zeitkritischer sind, internationale Benutzer berücksichtigen müssen oder wenn die Daten nur ein höheres Maß an Spezifität erfordern, ist es ratsam, timestamptz für diese Datensätze zu verwenden.

PostgreSQL timestamptz vs timestamp

Weitere Informationen zu den Unterschieden zwischen den beiden Zeitstempeltypen finden Sie im vollständigen Artikel hier: (https://kb.objectrocket.com/postgresql/postgresql-timestamp-vs-timestamptz-616)

Postgres-Tabelle mit Zeitstempeln

Erstellen Sie als Nächstes eine PostgreSQL-Tabelle mit Zeitstempelspalten unter Verwendung einiger der zuvor diskutierten Beispiele., Fügen Sie nun einen Testdatensatz in die Tabelle ein, um zu überprüfen, ob die Funktion ordnungsgemäß funktioniert.

Verwenden Sie Postgres, um eine Tabelle mit Zeitstempeln zu erstellen

Führen Sie nun eine CREATE TABLE SQL-Anweisung aus, die mehrere Spalten für Zeitstempel enthält.,g Befehl mit einem Unix Epoche Integer-Zeitstempel für die Schlüsselspalte der Tabelle:

1
2
3
4
5
6
ERSTELLEN Sie Tabellenzeitstempel(
epoch INT,
cool_stuff VARCHAR(64),
date_zone TIMESTAMPTZ,
DATE TIMESTAMP
);

HINWEIS: Das obige Tabellenschema kann nicht verwendet werden, um mehrere Datensätze gleichzeitig einzufügen, da doppelte Schlüssel erstellt werden, wenn mehrere Einfügungen in weniger als einer Sekunde ausgeführt.,

Zeitstempeleinträge in eine Postgres-Tabelle einfügen

Die Tabelle ist nun bereit für das Einfügen des Datensatzes., Führen Sie die folgende INSERT INTO-Anweisung aus, um beim Einfügen des Datensatzes Zeitstempel in den Datensatz einzufügen:

Die Auswahl des Datensatzes sollte nun ein Ergebnis zurückgeben, das dem Folgenden ähnelt:

Wie im folgenden Screenshot gezeigt, wurde ein sehr epischer Epochen-Datensatz erstellt:

Dieses Tutorial lieferte einen schrittweisen schritt-für-Schritt-Anleitung zum Erstellen von Postgres-Zeitstempeln und erläuterte, wie die Stempel in PostgreSQL-Tabellendatensätze eingefügt werden., Der Artikel behandelte speziell, wie man einen Zeitstempel der aktuellen Zeit erhält, das System auf die richtige Zeitzone setzt und lieferte ein Beispiel dafür, wie man Postgres verwendet, um eine Tabelle mit Zeitstempeln zu erstellen. Denken Sie daran, die Platzhalter objectrocket und some_db durch die tatsächliche Benutzerrolle und den Namen der tatsächlichen Datenbank zu ersetzen, die beim Herstellen einer Verbindung zur Datenbank verwendet wird.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.