PostgreSQL
 sql >> Datenbank >  >> RDS >> PostgreSQL

Wie timeofday() in PostgreSQL funktioniert

In PostgreSQL timeofday() ist eine Nicht-SQL-Standard-Zeitfunktion, die das aktuelle Datum und die aktuelle Uhrzeit mit der Abkürzung der Zeitzone zurückgibt.

Es ähnelt dem clock_timestamp() -Funktion, außer dass sie ihr Ergebnis als formatierten text zurückgibt Zeichenfolge anstelle eines timestamp with time zone Wert.

Das Ergebnis beider Funktionen ändert sich während der Ausführung einer Anweisung. Daher könnten Sie in verschiedenen Teilen der Anweisung unterschiedliche Ergebnisse erhalten, wenn Sie die Funktionen innerhalb einer einzelnen Anweisung mehrmals aufrufen.

Syntax

Die Syntax lautet wie folgt:

timeofday()

Es akzeptiert also keine Parameter.

Beispiel

Hier ist ein einfaches Beispiel zur Veranschaulichung.

SELECT timeofday();

Ergebnis:

Thu Jul 02 10:00:27.068776 2020 AEST

Mehrere Anrufe

Hier ist ein einfaches Beispiel, um zu demonstrieren, wie sich die Ergebnisse unterscheiden können, wenn Sie die Funktion mehrmals innerhalb einer einzigen SQL-Anweisung aufrufen.

\x
SELECT 
  timeofday(),
  pg_sleep(5),
  timeofday(),
  pg_sleep(3),
  timeofday();

Ergebnis (bei vertikaler Ausgabe):

timeofday | Thu Jul 02 10:02:23.060770 2020 AEST
pg_sleep  | 
timeofday | Thu Jul 02 10:02:28.131195 2020 AEST
pg_sleep  | 
timeofday | Thu Jul 02 10:02:31.192749 2020 AEST

Hier habe ich den pg_sleep() verwendet Funktion, um die Ausführung um einige Sekunden zu verzögern. Der erste Aufruf verzögert die Ausführung um 5 Sekunden und der zweite Aufruf verzögert die Ausführung um 3 Sekunden.

Wir können das jedes Mal sehen timeofday() aufgerufen wurde, war die tatsächliche Zeit etwas anders. Dies liegt hauptsächlich an pg_sleep() Funktion, kann aber auch ohne etwas anders aussehen, je nachdem wie schnell die Abfrage läuft.

Hier nochmal ohne pg_sleep() Anrufe.

SELECT 
  timeofday(),
  timeofday(),
  timeofday();

Ergebnis (bei vertikaler Ausgabe):

timeofday | Thu Jul 02 10:03:26.044065 2020 AEST
timeofday | Thu Jul 02 10:03:26.044076 2020 AEST
timeofday | Thu Jul 02 10:03:26.044080 2020 AEST

Diese Beispiele verwenden eine vertikale Ausgabe (normalerweise als erweiterte Anzeige in psql bezeichnet), um das Lesen der Ergebnisse zu erleichtern.

Sie können die erweiterte Anzeige in psql mit \x umschalten .