PostgreSQL - Datum und Uhrzeit relativ zum heutigen Tag prüfen

Bilal Shahid 20 Juni 2023
  1. PostgreSQL - Datum und Uhrzeit relativ zum heutigen Tag prüfen
  2. PostgreSQL NOW()-Funktion
PostgreSQL - Datum und Uhrzeit relativ zum heutigen Tag prüfen

Dieses Tutorial zeigt, wie Sie das Datum und die Uhrzeit relativ zum heutigen Tag in PostgreSQL überprüfen.

PostgreSQL - Datum und Uhrzeit relativ zum heutigen Tag prüfen

Bei der Verwendung von PostgreSQL müssen Benutzer in ihren Abfragen häufig ein Datum relativ zum heutigen Tag verwenden. PostgreSQL bietet effiziente Funktionen und Methoden, um die aktuelle Uhrzeit und das aktuelle Datum zu erhalten.

Wenn Sie Daten und Zeit relativ zum heutigen Tag überprüfen, können Sie durch Befolgen der richtigen Schritte die aktuelle Region ändern, um einen anderen Zeitstempel zu erhalten. Einige Funktionen erledigen die Aufgabe, aber es ist wichtig, die Funktionalität zu verstehen, um sie richtig zu verwenden.

Beginnen wir mit der Funktion NOW() weiter unten.

PostgreSQL NOW()-Funktion

Wenn Sie das aktuelle Datum und die aktuelle Uhrzeit in Ihrer Abfrage verwenden müssen, funktioniert die Funktion NOW(), um Ihnen genau das zu geben. Als Ausgabe ist der Rückgabetyp von NOW() ein timestamp mit der im Folgenden gezeigten Zeitzone:

SELECT NOW();

Ausgang:

2022-09-14 13:21:36.175627+07

Die Funktion NOW() muss das aktuelle Datum und die Uhrzeit basierend auf der auf dem Datenbankserver eingestellten Zeitzone zurückgeben. Wenn wir beispielsweise die Zeitzone auf Los Angeles setzen, gibt die Funktion die aktuelle Uhrzeit und das Datum von Los Angeles zurück.

Es wird im folgenden Beispiel angezeigt:

SET TIMEZONE='America/Los_angeles';
SELECT NOW();

Ausgang:

2022-09-14 02:16:21.759315-07

Im obigen Beispiel ist der Rückgabewert von NOW() das heutige aktuelle Datum und die aktuelle Uhrzeit, angepasst an die neue zugewiesene Zeitzone. Es ist auch möglich, das aktuelle Datum und die aktuelle Uhrzeit von PostgreSQL heute ohne Zeitzone zu erhalten, wenn Sie es explizit wie folgt umwandeln:

SELECT NOW()::timestamp;

Ausgang:

2022-09-14 02:16:21.324535

Die NOW()-Funktion ist ziemlich flexibel; Es ermöglicht Ihnen, Daten und Zeit aus der Zukunft zu erhalten. Siehe folgendes Beispiel:

SELECT (NOW() + interval '1 hour') AS after_one_hour;

Ausgang:

2022-09-14 03:16:21.759315-07

Diese Funktionalität ist nicht auf Stunden beschränkt; wir können es auf Tage und Minuten erweitern. Sehen Sie sich die folgenden Codeausschnitte an:

SELECT (NOW() + interval '1 day') AS after_one_day;

Ausgang:

2022-09-15 02:16:21.743315-07

Es folgt ein weiterer Codeblock:

SELECT (NOW() - interval '4 hours 15 minutes') AS after_fourhrs_15min;

Ausgang:

2022-09-14 10:01:21.776315-07

Verwenden Sie die NOW()-Funktion als Standardwerte

Beim Erstellen Ihrer Datenbanktabellen können Sie NOW() als Standardwert für jede Tabellenspalte verwenden. Erstellen Sie zuerst eine neue Tabelle mit der Spalte created_at. Setzen Sie ihn auf den Standardwert der Funktion NOW().

CREATE TABLE table_name( 
    created_at TIMESTAMPTZ DEFAULT NOW()
);

Sobald Sie Daten in die Spalten der Tabelle eingefügt und mit dem Befehl SELECT angezeigt haben, enthält die Spalte created_at Zeitstempel für jeden Dateneintrag.

Alternativen zu NOW() in PostgreSQL

Neben der Funktion NOW() gibt es mehrere andere Funktionen, die Sie verwenden können, um das aktuelle Datum und die Uhrzeit zusammen mit einer Zeitzone zu erhalten. Verwenden Sie die Funktion CURRENT_TIME oder CURRENT_TIMESTAMP, um ähnliche Ergebnisse wie die Funktion NOW() zu erhalten.

Sie können sie auf folgende Weise verwenden:

SELECT CURRENT_TIMESTAMP, CURRENT_TIME;

Ausgang:

2022-09-14 02:16:21.759315-07 | 02:16:21.759315-07

Sie können den aktuellen Zeitstempel auch ohne Zeitzone mit Funktionen wie LOCALTIME & LOCALTIMESTAMP erhalten.

SELECT LOCALTIMESTAMP, LOCALTIME;

Ausgang:

2022-09-14 02:16:21.759315 | 02:16:21.759315

Wenn es ein Ereignis gibt, bei dem Sie sich nur für das Datum und nicht für die Uhrzeit interessieren, ersetzen Sie CURRENT_DATE durch NOW(), und es funktioniert wie folgt:

SELECT * FROM tablename where dateval > NOW() -interval '1 year';

Jetzt durch CURRENT_DATE ersetzen:

SELECT * FROM tablename where dateval > CURRENT_DATE() -interval '1 year';

Es gibt nur das Datum zurück, nicht die Uhrzeit. NOW() und alle damit verbundenen oben erwähnten Funktionen geben die Startzeit der aktuellen Transaktion zurück. Die zurückgegebenen Werte dieser Funktion sind dieselben wie innerhalb der Transaktion.

Das folgende Beispiel mag eventuelle Missverständnisse ausräumen:

postgres =# BEGIN;
BEGIN
postgres=# SELECT NOW();
2022-09-14 02:16:21.759315-07 //output
postgres=# SELECT pg_sleep(2);
postgres=# SELECT NOW();
2022-09-14 02:16:21.759315-07 //output
postgres=# COMMIT
COMMIT

Hier rufen wir die Funktion während der gesamten Transaktion auf, und die Rückgabewerte ändern sich nicht jedes Mal.

Wenn Sie jedoch das aktuelle Datum und die Uhrzeit benötigen, die während der Transaktion aktualisiert werden, macht TIMEOFDAY dies möglich. Wenn Sie zum Beispiel denselben Code wie die obige Transaktion ausführen, werden das aktuelle Datum und die Uhrzeit nach pg_sleep für 2 Sekunden erhöht.

Wir hoffen, dass dieses Tutorial Ihnen geholfen hat, die zahlreichen Funktionen zu lernen, die bei der Funktion NOW() helfen, und wie Sie sie ausführen.

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

Verwandter Artikel - PostgreSQL Date