Di PostgreSQL, make_timestamp()
fungsi ini memungkinkan Anda membuat stempel waktu dari bidang tahun, bulan, hari, jam, menit, dan detik.
Sintaks
Fungsi tersebut memiliki sintaks berikut:
make_timestamp(year int, month int, day int, hour int, min int, sec double precision)
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 .
Hasilnya dikembalikan sebagai stempel waktu . Lebih tepatnya, itu dikembalikan sebagai waktu tanpa zona waktu .
Contoh
Berikut adalah contoh dasar untuk didemonstrasikan.
SELECT make_timestamp(2020, 10, 25, 9, 30, 17.12);
Hasil:
2020-10-25 09:30:17.12
Dan kami dapat memverifikasi jenis pengembalian dengan kueri berikut.
SELECT pg_typeof(make_timestamp(2020, 10, 25, 9, 30, 17.12));
Hasil:
timestamp without time zone
pg_typeof()
function mengembalikan tipe data argumennya, jadi saya meneruskan make_timestamp()
sebagai argumen..
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_timestamp(2020, 13, 25, 9, 30, 17.12);
Hasil:
ERROR: date field value out of range: 2020-13-25
Dalam hal ini bulan 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_timestamp(2020, 10, 25, 25, 30, 17.12);
Hasil:
ERROR: time field value out of range: 25:30:17.12
Meneruskan String sebagai Argumen
Dokumentasi Postgres menyatakan bahwa argumen harus bilangan bulat (dan presisi ganda dalam hal seconds
argumen), tetapi meneruskan string juga berfungsi (mungkin karena mereka secara implisit dikonversi ke bilangan bulat), selama setiap argumen berada dalam rentang yang tepat.
SELECT make_timestamp('2020', '12', '25', '10', '30', '17.12');
Hasil:
2020-12-25 10:30:17.12
Sekali lagi kita dapat menggunakan pg_type()
untuk memeriksa tipe data yang dihasilkan.
SELECT pg_typeof(make_timestamp('2020', '12', '25', '10', '30', '17.12'));
Hasil:
timestamp without time zone
Namun, Anda masih perlu memastikan setiap argumen akan valid setelah dikonversi ke bilangan bulat, jika tidak, Anda akan mendapatkan kesalahan.
SELECT pg_typeof(make_timestamp('2020', '13', '25', '10', '30', '17.12'));
Hasil:
ERROR: date field value out of range: 2020-13-25
Stempel Waktu Dengan Zona Waktu
Untuk membuat stempel waktu dengan zona waktu nilai, gunakan make_timestamptz()
fungsi.