PostgreSQL
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> PostgreSQL

Cách pg_sleep_until () hoạt động trong PostgreSQL

Trong PostgreSQL, bạn có thể sử dụng pg_sleep_until() chức năng trì hoãn việc thực thi cho đến một dấu thời gian được chỉ định.

Điều này hữu ích khi bạn muốn có một thời gian thức dậy cụ thể.

Lưu ý rằng pg_sleep_until không được đảm bảo sẽ thức dậy chính xác vào thời gian được chỉ định, nhưng nó sẽ không thức dậy sớm hơn.

Cú pháp

Cú pháp như sau:

pg_sleep_until(timestamp with time zone)

Ví dụ

Dưới đây là một ví dụ để chứng minh cách sử dụng của nó.

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

Kết quả (sử dụng đầu ra dọc):

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

Tôi đã sử dụng clock_timestamp() trong ví dụ này, vì nó thay đổi trong quá trình thực thi câu lệnh. Điều này cho phép chúng tôi xem các giá trị được cập nhật khi câu lệnh tiến triển.

Tôi đã sử dụng màn hình mở rộng (đôi khi được gọi là "đầu ra theo chiều dọc") trong ví dụ này để giúp bạn dễ dàng xem kết quả hơn.

Bạn có thể chuyển đổi hiển thị mở rộng trong psql bằng cách sử dụng \x .

Ví dụ 2

Đây là một ví dụ khác, lần này với một lệnh gọi bổ sung tới pg_sleep_until()clock_timestamp() .

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

Kết quả (sử dụng đầu ra dọc):

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

Ví dụ 3

Trong ví dụ này, tôi chỉ định rõ ràng độ lệch ngày / giờ và múi giờ.

Ngoài ra, tôi chạy truy vấn sau khi dấu thời gian đầu tiên đã trôi qua. Do đó nó chạy ngay lập tức.

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

Kết quả (sử dụng đầu ra dọc):

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

Như kết quả cho thấy, tôi đã không bắt đầu chạy truy vấn cho đến 17 giây sau pg_sleep_until() đầu tiên giá trị và do đó nó chạy ngay lập tức và sử dụng dấu thời gian tại thời điểm nó chạy.

Các dấu thời gian của tôi đều liên tiếp nhanh chóng trong các ví dụ này, bởi vì tôi không muốn đợi hàng giờ hoặc hàng ngày chỉ để cập nhật bài viết này. Nhưng bạn có thể tiếp tục và chỉ định một ngày khác nếu được yêu cầu.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Chọn truy vấn có giới hạn bù quá chậm

  2. Ràng buộc thả PostgreSQL với tên không xác định

  3. Tổng quan về các tiện ích mở rộng đáng tin cậy trong PostgreSQL 13

  4. GROUP hoặc DISTINCT sau khi JOIN trả về các bản sao

  5. Cập nhật phiên bản Docker PGMASTER PostgreSQL