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).