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

Bagaimana Now() Bekerja di PostgreSQL

Di PostgreSQL, now() fungsi mengembalikan tanggal dan waktu saat ini (termasuk offset zona waktu), pada awal transaksi saat ini.

Ini setara dengan transaction_timestamp() fungsi.

Ini juga mirip dengan current_timestamp fungsi (ketika dipanggil tanpa argumen).

now() function tidak menerima parameter apa pun, jadi Anda tidak dapat menentukan presisinya, sedangkan current_timestamp dapat dipanggil dengan atau tanpa parameter presisi.

Juga, now() bukan standar SQL (seperti transaction_timestamp() fungsi).

Sintaks

Sintaksnya seperti ini:

now()

Tidak ada argumen yang diperlukan atau diterima.

Contoh Dasar

Berikut adalah contoh dasar untuk didemonstrasikan.

SELECT now();

Hasil:

2020-07-02 09:51:12.088506+10

Dalam Transaksi

Berikut adalah contoh untuk mendemonstrasikan cara kerjanya dalam suatu transaksi.

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

Inilah hasil lengkap dalam terminal saya saat menggunakan psql:

postgres=# BEGIN;
BEGIN
postgres=# SELECT now();
              now              
-------------------------------
 2020-07-02 09:51:53.905091+10
(1 row)


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


postgres=# SELECT now();
              now              
-------------------------------
 2020-07-02 09:51:53.905091+10
(1 row)


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


postgres=# SELECT now();
              now              
-------------------------------
 2020-07-02 09:51:53.905091+10
(1 row)


postgres=# COMMIT;
COMMIT

Ketiga nilai waktu adalah identik, meskipun pg_sleep() fungsi digunakan untuk menunda eksekusi antara setiap panggilan ke now() , yang masing-masing kebetulan berada dalam pernyataan SQL-nya sendiri.

Jadi kita dapat melihat bahwa waktu yang dikembalikan untuk setiap pernyataan didasarkan pada waktu mulai transaksi saat ini – bukan pernyataan. Itu tidak berubah saat transaksi berlangsung.

Hal ini memungkinkan satu transaksi memiliki gagasan yang konsisten tentang waktu "saat ini", sehingga beberapa modifikasi dalam transaksi yang sama memiliki cap waktu yang sama.

Beberapa Panggilan dalam Satu Pernyataan

Itu juga tidak berubah seiring berjalannya pernyataan.

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

Hasil (menggunakan keluaran vertikal):

now      | 2020-07-02 09:53:33.766806+10
pg_sleep | 
now      | 2020-07-02 09:53:33.766806+10
pg_sleep | 
now      | 2020-07-02 09:53:33.766806+10

Sekali lagi, ketiga nilai waktu adalah identik, meskipun pg_sleep() fungsi digunakan untuk menunda eksekusi antara setiap panggilan ke now() .

Ini berbeda dengan statement_timestamp() , yang melakukannya ubah dengan setiap pernyataan, dan juga clock_timestamp() fungsi, yang berubah bahkan saat itu berkembang melalui setiap pernyataan (jika dipanggil beberapa kali dalam pernyataan).


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Alat GUI untuk PostgreSQL

  2. Postgresql:Cara menemukan file pg_hba.conf menggunakan Mac OS X

  3. Pembaruan Versi PostgreSQL Docker PGMASTER

  4. Cara memperbarui ID urutan postgreSQL secara massal untuk semua tabel

  5. pemilihan baris acak cepat di Postgres