PostgreSQL
 sql >> Teknologi Basis Data >  >> RDS >> PostgreSQL

Bagaimana pg_sleep_until() Bekerja di PostgreSQL

Di PostgreSQL, Anda dapat menggunakan pg_sleep_until() berfungsi untuk menunda eksekusi hingga stempel waktu yang ditentukan.

Ini berguna ketika waktu bangun tertentu diinginkan.

Perhatikan bahwa pg_sleep_until tidak dijamin untuk bangun tepat pada waktu yang ditentukan, tetapi tidak akan bangun lebih awal.

Sintaks

Sintaksnya seperti ini:

pg_sleep_until(timestamp with time zone)

Contoh

Berikut ini contoh untuk mendemonstrasikan penggunaannya.

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

Hasil (menggunakan keluaran vertikal):

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

Saya menggunakan clock_timestamp() dalam contoh ini, karena berubah selama eksekusi pernyataan. Hal ini memungkinkan kami untuk melihat nilai yang diperbarui seiring perkembangan pernyataan.

Saya menggunakan tampilan yang diperluas (kadang-kadang disebut sebagai "output vertikal") dalam contoh ini untuk memudahkan melihat hasilnya.

Anda dapat mengaktifkan tampilan yang diperluas di psql dengan menggunakan \x .

Contoh 2

Berikut contoh lain, kali ini dengan panggilan tambahan ke pg_sleep_until() dan clock_timestamp() .

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

Hasil (menggunakan keluaran vertikal):

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

Contoh 3

Dalam contoh ini, saya secara eksplisit menentukan offset tanggal/waktu dan zona waktu.

Juga, saya menjalankan kueri setelah stempel waktu pertama berlalu. Oleh karena itu segera dijalankan.

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

Hasil (menggunakan keluaran vertikal):

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

Seperti yang ditunjukkan oleh hasilnya, saya tidak mulai menjalankan kueri hingga 17 detik setelah pg_sleep_until() pertama nilai, sehingga ia langsung berjalan dan menggunakan stempel waktu pada saat dijalankan.

Stempel waktu saya semuanya berurutan dalam contoh ini, karena saya tidak ingin menunggu berjam-jam atau berhari-hari hanya untuk memperbarui artikel ini. Tetapi Anda dapat melanjutkan dan menentukan tanggal yang berbeda jika diperlukan.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Kesalahan Migrasi Django:Kolom tidak ada

  2. Tutorial PostgreSQL Untuk Pemula – Yang Perlu Anda Ketahui Tentang PostgreSQL

  3. PostgreSQL:Enam Potongan yang Tidak Mudah

  4. Instal Postgres.app di Mac

  5. Anotasi Kueri Boot Musim Semi dengan nativeQuery tidak berfungsi di Postgresql