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

Jak działa funkcja LocalTimeStamp() w PostgreSQL

W PostgreSQL localtimestamp() funkcja zwraca lokalną datę i godzinę, bez przesunięcia strefy czasowej.

Jeśli potrzebujesz przesunięcia strefy czasowej, użyj current_timestamp() zamiast tego.

Składnia

Możesz go użyć na jeden z następujących sposobów:

localtimestamp
localtimestamp(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 localtimestamp;

Wynik:

2020-07-01 15:55:48.039777

Przykład – konkretna precyzja

Oto przykład pokazujący, jak określić precyzję.

SELECT localtimestamp(0);

Wynik:

2020-07-01 15:56:02

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 localtimestamp(3);

Wynik:

2020-07-01 15:56:14.771

Transakcje

Rzeczywisty znacznik czasu 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 localtimestamp;
SELECT pg_sleep(5);
SELECT localtimestamp;
SELECT pg_sleep(5);
SELECT localtimestamp;
COMMIT;

Oto pełne dane wyjściowe mojego terminala podczas wykonywania tej transakcji w psql:

postgres=# BEGIN;
BEGIN
postgres=# SELECT localtimestamp;
      localtimestamp      
--------------------------
 2020-07-02 09:25:38.3858
(1 row)


postgres=# SELECT pg_sleep(5);
 pg_sleep 
----------
 
(1 row)


postgres=# SELECT localtimestamp;
      localtimestamp      
--------------------------
 2020-07-02 09:25:38.3858
(1 row)


postgres=# SELECT pg_sleep(5);
 pg_sleep 
----------
 
(1 row)


postgres=# SELECT localtimestamp;
      localtimestamp      
--------------------------
 2020-07-02 09:25:38.3858
(1 row)


postgres=# COMMIT;
COMMIT

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 
  localtimestamp,
  pg_sleep(5),
  localtimestamp,
  pg_sleep(5),
  localtimestamp;

Wynik (przy użyciu wyjścia pionowego):

localtimestamp | 2020-07-02 09:26:46.743801
pg_sleep       | 
localtimestamp | 2020-07-02 09:26:46.743801
pg_sleep       | 
localtimestamp | 2020-07-02 09:26:46.743801

Wszystkie trzy wartości czasu są identyczne, mimo że pg_sleep() funkcja została użyta do opóźnienia wykonania między każdym wywołaniem localtimestamp .

Jest to w przeciwieństwie do clock_timestamp() funkcja, która robi zmieniać się w miarę postępu w oświadczeniu.

W tym przykładzie 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. Prawidłowe wstawienie nazwy tabeli

  2. Maksymalna liczba znaków w etykietach (nazwy tabel, kolumny itp.)

  3. Ewolucja tolerancji błędów w PostgreSQL

  4. Jak zainstalować PostgreSQL 12 na Ubuntu 20.04 DigitalOcean?

  5. Wyszukiwanie w indeksach wyrażeń