PostgreSQL
 sql >> Baza danych >  >> RDS >> PostgreSQL

Jak działa funkcja LocalTime() w PostgreSQL

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):

czas lokalny | 09:23:45.108559pg_sleep | czas lokalny | 09:23:45.108559pg_sleep | czas lokalny | 09:23:45.108559

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 .


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. postgresql - zamień wszystkie wystąpienia ciągu w polu tekstowym

  2. Jak przełączać bazy danych w psql?

  3. Jak uzyskać różnicę dni/miesięcy/lat (datediff) między dwiema datami?

  4. STWÓRZ JĘZYK plpython3u – PostgreSQL 9.6

  5. niekompletne informacje z zapytania na pg_views