W PostgreSQL localtime
funkcja zwraca lokalną godzinę dnia, bez przesunięcia strefy czasowej.
Jeśli potrzebujesz przesunięcia strefy czasowej, użyj current_time()
zamiast tego.
Składnia
Możesz go użyć na jeden z następujących sposobów:
localtime
localtime(x)
Gdzie x
jest opcjonalnym parametrem precyzji, który powoduje zaokrąglenie wyniku do x
liczba cyfr ułamkowych w polu sekund.
Bez parametru precyzji (pierwsza składnia) wynik jest podawany z pełną dostępną precyzją.
Przykład – pełna precyzja
Oto podstawowy przykład demonstrujący wynik z pełną dostępną precyzją.
SELECT localtime;
Wynik:
15:50:25.314626
Przykład – konkretna precyzja
Oto przykład pokazujący, jak określić precyzję.
SELECT localtime(0);
Wynik:
15:50:44
W tym przykładzie określiłem precyzję zero, co oznacza, że nie zostały zwrócone żadne ułamki sekund.
Oto kolejny przykład, w którym określam liczbę ułamków sekund.
SELECT localtime(3);
Wynik:
15:50:59.039
Transakcje
Rzeczywisty czas jest oparty na czasie rozpoczęcia bieżącej transakcji. Dlatego nie zmienia się wraz z postępem transakcji.
Dzięki temu pojedyncza transakcja ma spójne pojęcie „bieżącego” czasu, dzięki czemu wiele modyfikacji w ramach tej samej transakcji ma ten sam znacznik czasu.
Oto przykład, który to pokazuje.
BEGIN;
SELECT localtime;
SELECT pg_sleep(5);
SELECT localtime;
SELECT pg_sleep(5);
SELECT localtime;
COMMIT;
Oto pełne dane wyjściowe mojego terminala podczas wykonywania tej transakcji w psql:
postgres=# BEGIN;BEGINpostgres=# SELECT czas lokalny; czas lokalny ----------------- 09:22:40.096909(1 wiersz)postgres=# SELECT pg_sleep(5); pg_sleep ---------- (1 wiersz)postgres=# WYBIERZ czas lokalny; czas lokalny ----------------- 09:22:40.096909(1 wiersz)postgres=# SELECT pg_sleep(5); pg_sleep ---------- (1 wiersz)postgres=# WYBIERZ czas lokalny; czas lokalny ----------------- 09:22:40.096909(1 wiersz)postgres=# ZATWIERDZ; ZATWIERDZ
Wszystkie trzy wartości czasu są identyczne, mimo że pg_sleep()
funkcja została użyta do opóźnienia wykonania pomiędzy każdym wyciągiem w ramach transakcji.
Jest to w przeciwieństwie do statement_timestamp()
co robi zmieniać się z każdym stwierdzeniem.
Wiele połączeń w wyciągu
Nie zmienia się również w miarę postępów w oświadczeniu.
\x
SELECT
localtime,
pg_sleep(5),
localtime,
pg_sleep(5),
localtime;
Wynik (przy użyciu wyjścia pionowego):
Wszystkie trzy wartości czasu są identyczne, mimo że pg_sleep()
funkcja została użyta do opóźnienia wykonania pomiędzy każdym wywołaniem localtime
.
Jest to w przeciwieństwie do clock_timestamp()
funkcja, która robi zmieniać się w miarę postępów w oświadczeniu.
Nawiasem mówiąc, użyłem wyjścia pionowego (znanego również jako wyjście rozszerzone), aby wyniki były nieco bardziej zwarte.
Możesz przełączać rozwinięte wyjście w psql za pomocą \x
.