W PostgreSQL, clock_timestamp()
to niestandardowa funkcja czasu w języku SQL, która zwraca bieżącą datę i godzinę.
Ważną kwestią związaną z tą funkcją jest to, że jej wynik zmienia się w trakcie wykonywania instrukcji. Dlatego możesz uzyskać różne wyniki w różnych częściach instrukcji, jeśli wielokrotnie wywołasz funkcję w ramach jednej instrukcji.
Składnia
Składnia jest tak prosta, jak to tylko możliwe:
clock_timestamp()
Więc nie przyjmuje żadnych parametrów.
Przykład
Oto podstawowy przykład do zademonstrowania.
SELECT clock_timestamp();
Wynik:
2020-07-01 09:53:22.823731+10
Wiele połączeń
Oto podstawowy przykład pokazujący, jak wyniki mogą się różnić, gdy wielokrotnie wywołasz funkcję w ramach jednej instrukcji SQL.
\x
SELECT
clock_timestamp(),
pg_sleep(5),
clock_timestamp(),
pg_sleep(3),
clock_timestamp();
Wynik (przy użyciu wyjścia pionowego):
clock_timestamp | 2020-07-01 09:58:29.744838+10 pg_sleep | clock_timestamp | 2020-07-01 09:58:34.813448+10 pg_sleep | clock_timestamp | 2020-07-01 09:58:37.859197+10
Tutaj użyłem pg_sleep()
funkcja opóźnienia wykonania o kilka sekund. Pierwsze połączenie opóźnia wykonanie o 5 sekund, a drugie połączenie opóźnia wykonanie o 3 sekundy.
Widzimy to za każdym razem clock_timestamp()
został wywołany, rzeczywisty czas był nieco inny. Wynika to głównie z pg_sleep()
funkcji, ale bez niej może być inaczej, w zależności od szybkości działania zapytania.
Oto znowu bez pg_sleep()
połączeń.
SELECT
clock_timestamp(),
clock_timestamp(),
clock_timestamp();
Wynik (przy użyciu wyjścia pionowego):
clock_timestamp | 2020-07-01 10:03:10.828557+10 clock_timestamp | 2020-07-01 10:03:10.828558+10 clock_timestamp | 2020-07-01 10:03:10.828558+10
Te przykłady używają pionowego wyjścia (zwykle nazywanego rozszerzonym wyświetlaniem w psql), aby ułatwić odczytanie wyników.
Możesz przełączać rozszerzone wyświetlanie w psql za pomocą \x
.