Di PostgreSQL, localtimestamp()
fungsi mengembalikan tanggal dan waktu lokal, tanpa offset zona waktu.
Jika Anda memerlukan offset zona waktu, gunakan current_timestamp()
sebagai gantinya.
Sintaks
Anda dapat menggunakannya dengan salah satu cara berikut:
localtimestamp
localtimestamp(x)
Dimana x
adalah parameter presisi opsional, yang menyebabkan hasilnya dibulatkan menjadi x
jumlah digit pecahan di bidang detik.
Tanpa parameter presisi (sintaks pertama), hasilnya diberikan ke presisi penuh yang tersedia.
Contoh – Presisi Penuh
Berikut adalah contoh dasar untuk mendemonstrasikan hasil menggunakan presisi penuh yang tersedia.
SELECT localtimestamp;
Hasil:
2020-07-01 15:55:48.039777
Contoh – Presisi Spesifik
Berikut adalah contoh untuk mendemonstrasikan cara menentukan presisi.
SELECT localtimestamp(0);
Hasil:
2020-07-01 15:56:02
Dalam contoh ini, saya menetapkan presisi nol, yang berarti tidak ada pecahan detik yang dikembalikan.
Berikut contoh lain di mana saya menentukan jumlah detik pecahan.
SELECT localtimestamp(3);
Hasil:
2020-07-01 15:56:14.771
Transaksi
Stempel waktu aktual didasarkan pada waktu mulai transaksi saat ini. Oleh karena itu, 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.
Berikut adalah contoh yang menunjukkan hal ini.
BEGIN;
SELECT localtimestamp;
SELECT pg_sleep(5);
SELECT localtimestamp;
SELECT pg_sleep(5);
SELECT localtimestamp;
COMMIT;
Berikut adalah output lengkap dari terminal saya saat menjalankan transaksi tersebut di psql:
postgres=# BEGIN; BEGIN postgres=# SELECT localtimestamp; localtimestamp -------------------------- 2020-07-02 09:25:38.3858 (1 row) postgres=# SELECT pg_sleep(5); pg_sleep ---------- (1 row) postgres=# SELECT localtimestamp; localtimestamp -------------------------- 2020-07-02 09:25:38.3858 (1 row) postgres=# SELECT pg_sleep(5); pg_sleep ---------- (1 row) postgres=# SELECT localtimestamp; localtimestamp -------------------------- 2020-07-02 09:25:38.3858 (1 row) postgres=# COMMIT; COMMIT
Ketiga nilai waktu itu identik, meskipun pg_sleep()
fungsi yang digunakan untuk menunda eksekusi antara setiap pernyataan dalam transaksi.
Ini berbeda dengan statement_timestamp()
yang melakukannya berubah dengan setiap pernyataan.
Beberapa Panggilan dalam Satu Pernyataan
Itu juga tidak berubah seiring berjalannya pernyataan.
\x
SELECT
localtimestamp,
pg_sleep(5),
localtimestamp,
pg_sleep(5),
localtimestamp;
Hasil (menggunakan keluaran vertikal):
localtimestamp | 2020-07-02 09:26:46.743801 pg_sleep | localtimestamp | 2020-07-02 09:26:46.743801 pg_sleep | localtimestamp | 2020-07-02 09:26:46.743801
Ketiga nilai waktu adalah identik, meskipun pg_sleep()
fungsi digunakan untuk menunda eksekusi antara setiap panggilan ke localtimestamp
.
Ini berbeda dengan clock_timestamp()
fungsi, yang melakukannya berubah seiring berjalannya pernyataan.
Dalam contoh ini, saya menggunakan output vertikal (juga dikenal sebagai output yang diperluas) untuk membuat hasilnya sedikit lebih ringkas.
Anda dapat mengaktifkan output yang diperluas di psql menggunakan \x
.