PostgreSQL
 sql >> база данни >  >> RDS >> PostgreSQL

Как работи LocalTimeStamp() в PostgreSQL

В PostgreSQL, localtimestamp() функцията връща местната дата и час без изместване на часовата зона.

Ако имате нужда от изместване на часовата зона, използвайте current_timestamp() вместо това.

Синтаксис

Можете да го използвате по един от следните начини:

localtimestamp
localtimestamp(x)

Където x е незадължителен параметър за прецизност, който кара резултатът да бъде закръглен до x брой дробни цифри в полето за секунди.

Без параметър за точност (първият синтаксис) резултатът се дава с пълната налична точност.

Пример – Пълна прецизност

Ето основен пример за демонстриране на резултат, използвайки пълната налична прецизност.

SELECT localtimestamp;

Резултат:

2020-07-01 15:55:48.039777

Пример – специфична прецизност

Ето пример, за да демонстрирате как да посочите точността.

SELECT localtimestamp(0);

Резултат:

2020-07-01 15:56:02

В този пример посочих точност от нула, което означава, че не са върнати частични секунди.

Ето още един пример, в който посочвам част от секунди.

SELECT localtimestamp(3);

Резултат:

2020-07-01 15:56:14.771

Транзакции

Действителното времеви печат се основава на началния час на текущата транзакция. Следователно тя не се променя с напредването на транзакцията.

Това позволява на една транзакция да има последователна представа за „текущото“ време, така че множеството модификации в рамките на една и съща транзакция да носят едно и също времеви печат.

Ето пример, който демонстрира това.

BEGIN;
SELECT localtimestamp;
SELECT pg_sleep(5);
SELECT localtimestamp;
SELECT pg_sleep(5);
SELECT localtimestamp;
COMMIT;

Ето пълния изход на моя терминал при изпълнение на тази транзакция в 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

И трите времеви стойности са идентични, въпреки че pg_sleep() функцията беше използвана за забавяне на изпълнението между всеки израз в транзакцията.

Това е в контраст с statement_timestamp() което прави променяйте с всяко изявление.

Множество обаждания в рамките на изявление

Освен това не се променя с напредването на изявлението.

\x
SELECT 
  localtimestamp,
  pg_sleep(5),
  localtimestamp,
  pg_sleep(5),
  localtimestamp;

Резултат (с помощта на вертикален изход):

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

И трите времеви стойности са идентични, въпреки че pg_sleep() функцията беше използвана за забавяне на изпълнението между всяко извикване на localtimestamp .

Това е в контраст с clock_timestamp() функция, която прави променяйте, докато преминава през изявлението.

В този пример използвах вертикален изход (известен също като разширен изход), за да направя резултатите малко по-компактни.

Можете да превключвате разширения изход в psql с помощта на \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. Psycopg2 използва памет за голяма заявка за избор

  2. добър postgresql клиент за windows?

  3. Как да изброите всички бази данни с помощта на PostgreSQL

  4. Как да автоматизирате внедряването на PostgreSQL база данни

  5. Не може да се свърже с postgres с помощта на jdbc в pyspark shell