Problem:
Sie möchten das aktuelle Datum und die Uhrzeit mit Zeitzoneninformationen aus einer PostgreSQL-Datenbank abrufen.
Lösung:
Wir verwenden entweder CURRENT_TIMESTAMP oder NOW(), um das aktuelle Datum und die aktuelle Uhrzeit mit dem Zeitzonenoffset zu erhalten.
SELECT CURRENT_TIMESTAMP ;
Hier ist das Ergebnis der Abfrage:
2019-09-15 13:13:12.118432+02
Diskussion:
CURRENT_TIMESTAMP
gibt das aktuelle Datum, die Uhrzeit und den Zeitzonenoffset zurück (unter Verwendung des Datums, der Uhrzeit und der Zeitzone des Computers, auf dem PostgreSQL ausgeführt wird). Dies wird als Wert im 'YYYY-MM-DD hh:mm:ss.nnnnnn+/-tz' zurückgegeben Format. In diesem Format:
- JJJJ ist eine 4-stellige Jahreszahl.
- MM ist ein zweistelliger Monat.
- DD ist ein zweistelliger Tag des Monats.
- hh ist eine zweistellige Stunde.
- mm ist eine zweistellige Minute.
- ss ist eine zweistellige Sekunde.
- nnnnnn definiert die Anzahl der Sekundenbruchteile (d.h. die Genauigkeit) von 0 bis 6.
- +tz oder -tz ist der Zeitzonenoffset, entweder plus oder minus von UTC.
Wie Sie sehen, hat diese Funktion keine Klammern. Wenn Sie jedoch ein Datum und eine Uhrzeit mit einer bestimmten Genauigkeit anzeigen möchten, können Sie das optionale Integer-Argument verwenden. Es gibt ein Datum und eine Uhrzeit mit Sekundenbruchteilen und dem Zeitzonen-Offset zurück. Dieses Argument muss im Bereich von 0 bis 6 liegen; 0 ist kein Sekundenbruchteil, 1 ist ein Sekundenbruchteil (z. B. eine Stelle hinter dem Komma) usw. Schauen Sie sich das nächste Beispiel an:
SELECT CURRENT_TIMESTAMP(3) ;
Hier ist das Ergebnis der Abfrage:
2019-09-15 13:01:51.142+02
Dieses Ergebnis enthält einen 3-stelligen Sekundenbruchteil, da wir 3 als Argument in die CURRENT_TIMESTAMP-Funktion eingefügt haben. Der Zeitzonen-Offset erscheint immer noch am Ende.
Die von dieser Funktion zurückgegebene Zeit ändert sich während Transaktionen oder einer einzelnen Abfrage nicht. Es ist immer der Zeitpunkt, an dem die Transaktion begonnen hat.
NOW() ähnelt dem CURRENT_TIMESTAMP
Funktion und gibt dasselbe Ergebnis zurück. Der Unterschied besteht darin, dass CURRENT_TIMESTAMP
ist die SQL-Standardfunktion, während NOW() spezifisch für PostgreSQL ist.
SELECT NOW() ;
Hier ist das Ergebnis der Abfrage:
2019-08-27 12:18:55.324145+02
Beachten Sie, dass die Funktion NOW() Klammern erfordert. Sie können sie jedoch leer lassen und erhalten den Standardwert.
CURRENT_TIMESTAMP und NOW() geben den timestamptz zurück Datentyp.