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

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

В PostgreSQL можете да използвате pg_sleep_until() функция за забавяне на изпълнението до определен времеви печат.

Това е полезно, когато се желае точно определено време за събуждане.

Имайте предвид, че pg_sleep_until не е гарантирано, че ще се събуди точно в определеното време, но няма да се събуди по-рано.

Синтаксис

Синтаксисът е така:

pg_sleep_until(timestamp with time zone)

Пример

Ето пример за демонстриране на използването му.

\x
SELECT 
  clock_timestamp(),
  pg_sleep_until('today 15:30'),
  clock_timestamp();

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

clock_timestamp | 2020-06-28 15:29:54.564608+10
pg_sleep_until  |
clock_timestamp | 2020-06-28 15:30:00.0119+10

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

Използвах разширен дисплей (понякога наричан „вертикален изход“) в този пример, за да улесня виждането на резултата.

Можете да превключвате разширеното показване в psql, като използвате \x .

Пример 2

Ето още един пример, този път с допълнително извикване на pg_sleep_until() и clock_timestamp() .

SELECT 
  clock_timestamp(),
  pg_sleep_until('today 15:32'),
  clock_timestamp(),
  pg_sleep_until('today 15:33'),
  clock_timestamp();

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

clock_timestamp | 2020-06-28 15:31:23.142358+10
pg_sleep_until  |
clock_timestamp | 2020-06-28 15:32:00.061566+10
pg_sleep_until  |
clock_timestamp | 2020-06-28 15:33:00.074381+10

Пример 3

В този пример изрично посочвам датата/часа и отместването на часовата зона.

Също така, стартирам заявката след изтичане на първото клеймо за време. Поради това работи незабавно.

SELECT 
  clock_timestamp(),
  pg_sleep_until('2020-06-29 08:54:00.000000+10'),
  clock_timestamp(),
  pg_sleep_until('2020-06-29 08:55:00.000000+10'),
  clock_timestamp();

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

clock_timestamp | 2020-06-29 08:54:17.189189+10
pg_sleep_until  |
clock_timestamp | 2020-06-29 08:54:17.189196+10
pg_sleep_until  |
clock_timestamp | 2020-06-29 08:55:00.062783+10

Както показва резултатът, започнах да изпълнявам заявката до 17 секунди след първия pg_sleep_until() стойност, и така се стартира незабавно и използва времевата марка в момента, в който се изпълнява.

Моите времеви марки бяха в бърза последователност в тези примери, защото не исках да чакам часове или дни само за да актуализирам тази статия. Но можете да продължите и да посочите друга дата, ако е необходимо.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Търсене в индекси на изрази

  2. Оптимизиране на груповата максимална заявка

  3. Дизайн на база данни за създаване на таблици в движение

  4. поддържа ли rails postgres адаптер ssl?

  5. Създайте ER диаграма в pgAdmin