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

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

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

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

Синтаксис

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

localtime
localtime(x)

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

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

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

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

SELECT localtime;

Резултат:

15:50:25.314626

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

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

SELECT localtime(0);

Резултат:

15:50:44

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

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

SELECT localtime(3);

Резултат:

15:50:59.039

Транзакции

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

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

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

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

Ето пълния изход на моя терминал при изпълнение на тази транзакция в psql:

postgres=# BEGIN;
BEGIN
postgres=# SELECT localtime;
    localtime    
-----------------
 09:22:40.096909
(1 row)


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


postgres=# SELECT localtime;
    localtime    
-----------------
 09:22:40.096909
(1 row)


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


postgres=# SELECT localtime;
    localtime    
-----------------
 09:22:40.096909
(1 row)


postgres=# COMMIT;
COMMIT

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

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

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

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

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

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

localtime | 09:23:45.108559
pg_sleep  | 
localtime | 09:23:45.108559
pg_sleep  | 
localtime | 09:23:45.108559

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

Това е в контраст с 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. Как да добавя PostgreSQL източник на данни към WildFly 9.0?

  2. Каква е разликата между postgres и postgresql_psycopg2 като машина за база данни за django?

  3. ST_DWithin приема параметър като градус, а не метри, защо?

  4. Как да добавите условен уникален индекс към PostgreSQL

  5. Извличане на годината от дата в PostgreSQL