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

Bagaimana statement_timestamp() Bekerja di PostgreSQL

Di PostgreSQL, statement_timestamp() fungsi mengembalikan tanggal dan waktu saat ini (termasuk offset zona waktu), di awal pernyataan saat ini.

Fungsi tidak menerima parameter apa pun, jadi Anda tidak dapat menentukan presisinya.

Juga, statement_timestamp() adalah fungsi non-SQL-standar.

Sintaks

Sintaksnya seperti ini:

statement_timestamp()

Tidak ada argumen yang diperlukan atau diterima.

Contoh Dasar

Berikut adalah contoh dasar untuk didemonstrasikan.

SELECT statement_timestamp();

Hasil:

2020-07-02 09:30:45.46903+10

Dalam Transaksi

Berikut adalah contoh untuk mendemonstrasikan cara kerjanya dalam suatu transaksi.

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

Inilah hasil lengkap dalam terminal saya saat menggunakan psql:

postgres=# BEGIN;
BEGIN
postgres=# SELECT statement_timestamp();
      statement_timestamp      
-------------------------------
 2020-07-02 09:31:13.363128+10
(1 row)


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


postgres=# SELECT statement_timestamp();
      statement_timestamp      
-------------------------------
 2020-07-02 09:31:18.424503+10
(1 row)


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


postgres=# SELECT statement_timestamp();
      statement_timestamp      
-------------------------------
 2020-07-02 09:31:23.501539+10
(1 row)


postgres=# COMMIT;
COMMIT

Dalam contoh ini saya menggunakan pg_sleep() berfungsi untuk menunda eksekusi antara setiap pernyataan.

Karena setiap statement_timestamp() panggilan berada dalam pernyataan SQL-nya sendiri, stempel waktu yang dikembalikan berbeda untuk setiap panggilan.

Ini berbeda dengan transaction_timestamp() , yang tidak berubah dengan setiap pernyataan. Ini mengembalikan stempel waktunya berdasarkan waktu mulai transaksi.

Beberapa Panggilan dalam Satu Pernyataan

Berikut adalah contoh yang terjadi jika kita menggabungkan ketiga panggilan fungsi dalam satu pernyataan SQL.

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

Hasil (menggunakan keluaran vertikal):

statement_timestamp | 2020-07-02 09:34:41.06911+10
pg_sleep            | 
statement_timestamp | 2020-07-02 09:34:41.06911+10
pg_sleep            | 
statement_timestamp | 2020-07-02 09:34:41.06911+10

Kali ini, ketiga nilai stempel waktu identik, meskipun pg_sleep() fungsi digunakan untuk menunda eksekusi antara setiap panggilan ke statement_timestamp() .

Ini berbeda dengan clock_timestamp() fungsi, yang berubah bahkan saat itu berkembang melalui 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. Menginstal permata pg; KESALAHAN:Gagal membuat ekstensi asli permata

  2. tidak ada entri FROM-klausa untuk tabel Grupo cakephp

  3. Array PHP ke array postgres

  4. Klausa CHECK untuk tampilan yang dapat diperbarui

  5. Bagaimana cara menghindari karakter tanda tanya (?) dengan Spring JpaRepository