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 .