Di PostgreSQL, make_timestamptz()
fungsi memungkinkan Anda membuat stempel waktu dengan zona waktu dari bidang tahun, bulan, hari, jam, menit dan detik, serta bidang zona waktu opsional.
Sintaks
Fungsi tersebut memiliki sintaks berikut:
make_timestamptz(year int, month int, day int, hour int, min int, sec double precision, [ timezone text ])
Dimana year
, month
, dan day
adalah bilangan bulat yang mewakili tahun, bulan, dan hari dari tanggal, dan hour
adalah bagian jam, min
adalah bagian menit, dan sec
adalah bagian detik.
Jam dan menit diberikan sebagai bilangan bulat , detik diberikan sebagai presisi ganda .
timezone
opsional argumen adalah untuk zona waktu. Jika tidak ditentukan, zona waktu saat ini digunakan.
Hasilnya dikembalikan sebagai waktu dengan zona waktu .
Contoh
Berikut adalah contoh dasar untuk didemonstrasikan.
SELECT make_timestamptz(1999, 03, 14, 10, 35, 12.15);
Hasil:
1999-03-14 10:35:12.15+10
Dalam hal ini saya tidak memberikan zona waktu, jadi saya menggunakan zona waktu saat ini.
Kami dapat memverifikasi jenis pengembalian dengan kueri berikut.
SELECT pg_typeof(make_timestamptz(1999, 03, 14, 10, 35, 12.15));
Hasil:
timestamp with time zone
pg_typeof()
function mengembalikan tipe data argumennya, jadi saya meneruskan make_timestamptz()
sebagai argumen.
Tentukan Zona Waktu
Dalam contoh ini saya secara eksplisit memberikan zona waktu.
SELECT make_timestamptz(1999, 03, 14, 10, 35, 12.15, 'Indian/Mauritius');
Hasil:
1999-03-14 16:35:12.15+10
Berikut ini contoh lain, tetapi dengan berbagai nilai zona waktu.
\x
SELECT
make_timestamptz(2000, 01, 01, 00, 01, 00.00, 'ACDT'),
make_timestamptz(2000, 01, 01, 00, 01, 00.00, 'ACST'),
make_timestamptz(2000, 01, 01, 00, 01, 00.00, 'ACT'),
make_timestamptz(2000, 01, 01, 00, 01, 00.00, '+01'),
make_timestamptz(2000, 01, 01, 00, 01, 00.00, '-01'),
make_timestamptz(2000, 01, 01, 00, 01, 00.00, 'NZ');
Hasil (menggunakan keluaran vertikal):
make_timestamptz | 1999-12-31 23:31:00+10 make_timestamptz | 2000-01-01 00:31:00+10 make_timestamptz | 2000-01-01 15:01:00+10 make_timestamptz | 2000-01-01 09:01:00+10 make_timestamptz | 2000-01-01 11:01:00+10 make_timestamptz | 1999-12-31 21:01:00+10
Dalam contoh ini saya menggunakan \x
untuk mengaktifkan tampilan yang diperluas (juga dikenal sebagai "output vertikal") agar hasilnya lebih mudah dibaca.
Memasukkan \x
mengaktifkan dan menonaktifkan tampilan yang diperluas (yaitu mengaktifkan dan menonaktifkannya).
Lihat Mengembalikan Daftar Zona Waktu yang Didukung oleh PostgreSQL untuk mendapatkan daftar zona waktu yang valid.
Di Luar Jangkauan
Jika salah satu argumen berada di luar rentang nilai yang mungkin untuk bagian tanggalnya, Anda akan mendapatkan kesalahan "di luar rentang".
SELECT make_timestamptz(1999, 03, 32, 10, 35, 12.15);
Hasil:
ERROR: date field value out of range: 1999-03-32
Dalam hal ini hari adalah 32, yang berada di luar jangkauan, sehingga pesan tersebut menjelaskan bahwa nilai bidang tanggal berada di luar jangkauan.
Jika hanya nilai bidang waktu yang berada di luar rentang, kesalahan akan diberi kata yang sesuai.
SELECT make_timestamptz(1999, 03, 30, 10, 61, 12.15);
Hasil:
ERROR: time field value out of range: 10:61:12.15
Dalam hal ini minutes
argumennya adalah 61, yang di luar jangkauan.
Stempel Waktu Tanpa Zona Waktu
Untuk membuat stempel waktu tanpa zona waktu, gunakan make_timestamp()
fungsi.