Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Fungsi DATEDIFF
DATEDIFF mengembalikan perbedaan antara bagian tanggal dari dua ekspresi tanggal atau waktu.
Sintaks
DATEDIFF ( datepart, {date|time|timetz|timestamp}, {date|time|timetz|timestamp} )
Argumen
- datepart
-
Bagian spesifik dari nilai tanggal atau waktu (tahun, bulan, atau hari, jam, menit, detik, milidetik, atau mikrodetik) tempat fungsi beroperasi. Untuk informasi selengkapnya, lihat Bagian tanggal untuk fungsi tanggal atau stempel waktu.
Secara khusus, DATEDIFF menentukan jumlah batas bagian tanggal yang disilangkan antara dua ekspresi. Misalnya, Anda menghitung perbedaan tahun antara dua tanggal,
12-31-2008
dan01-01-2009
. Dalam hal ini, fungsi mengembalikan 1 tahun meskipun fakta bahwa tanggal-tanggal ini hanya terpisah satu hari. Jika Anda menemukan perbedaan jam antara dua stempel waktu,01-01-2009 8:30:00
dan01-01-2009 10:00:00
, hasilnya adalah 2 jam. Jika Anda menemukan perbedaan jam antara dua stempel waktu,8:30:00
dan10:00:00
, hasilnya adalah 2 jam. - tanggal | waktu | timetz | stempel waktu
-
Kolom atau ekspresi TANGGAL, WAKTU, TIMETZ, atau TIMESTAMP yang secara implisit dikonversi ke TANGGAL, WAKTU, TIMETZ, atau TIMESTAMP. Ekspresi harus berisi tanggal atau bagian waktu yang ditentukan. Jika tanggal atau waktu kedua lebih lambat dari tanggal atau waktu pertama, hasilnya positif. Jika tanggal atau waktu kedua lebih awal dari tanggal atau waktu pertama, hasilnya negatif.
Jenis pengembalian
BIGINT
Contoh dengan kolom DATE
Contoh berikut menemukan perbedaan, dalam jumlah minggu, antara dua nilai tanggal literal.
select datediff(week,'2009-01-01','2009-12-31') as numweeks; numweeks ---------- 52 (1 row)
Contoh berikut menemukan perbedaan, dalam jam, antara dua nilai tanggal literal. Ketika Anda tidak memberikan nilai waktu untuk tanggal, defaultnya adalah 00:00:00.
select datediff(hour, '2023-01-01', '2023-01-03 05:04:03'); date_diff ---------- 53 (1 row)
Contoh berikut menemukan perbedaan, dalam hari, antara dua nilai TIMESTAMETZ literal.
Select datediff(days, 'Jun 1,2008 09:59:59 EST', 'Jul 4,2008 09:59:59 EST')
date_diff ---------- 33
Contoh berikut menemukan perbedaan, dalam hari, antara dua tanggal dalam baris tabel yang sama.
select * from date_table; start_date | end_date -----------+----------- 2009-01-01 | 2009-03-23 2023-01-04 | 2024-05-04 (2 rows) select datediff(day, start_date, end_date) as duration from date_table; duration --------- 81 486 (2 rows)
Contoh berikut menemukan perbedaan, dalam jumlah kuartal, antara nilai literal di masa lalu dan tanggal hari ini. Contoh ini mengasumsikan bahwa tanggal saat ini adalah 5 Juni 2008. Anda dapat memberi nama bagian tanggal secara lengkap atau menyingkatnya. Nama kolom default untuk fungsi DATEDIFF adalah DATE_DIFF.
select datediff(qtr, '1998-07-01', current_date); date_diff ----------- 40 (1 row)
Contoh berikut bergabung dengan tabel PENJUALAN dan DAFTAR untuk menghitung berapa hari setelah mereka terdaftar, tiket apa pun dijual untuk daftar 1000 hingga 1005. Penantian terpanjang untuk penjualan daftar ini adalah 15 hari, dan yang terpendek kurang dari satu hari (0 hari).
select priceperticket, datediff(day, listtime, saletime) as wait from sales, listing where sales.listid = listing.listid and sales.listid between 1000 and 1005 order by wait desc, priceperticket desc; priceperticket | wait ---------------+------ 96.00 | 15 123.00 | 11 131.00 | 9 123.00 | 6 129.00 | 4 96.00 | 4 96.00 | 0 (7 rows)
Contoh ini menghitung jumlah rata-rata jam penjual menunggu semua penjualan tiket.
select avg(datediff(hours, listtime, saletime)) as avgwait from sales, listing where sales.listid = listing.listid; avgwait --------- 465 (1 row)
Contoh dengan kolom TIME
Berikut contoh tabel TIME_TEST memiliki kolom TIME_VAL (tipe TIME) dengan tiga nilai dimasukkan.
select time_val from time_test; time_val --------------------- 20:00:00 00:00:00.5550 00:58:00
Contoh berikut menemukan perbedaan jumlah jam antara kolom TIME_VAL dan literal waktu.
select datediff(hour, time_val, time '15:24:45') from time_test; date_diff ----------- -5 15 15
Contoh berikut menemukan perbedaan jumlah menit antara dua nilai waktu literal.
select datediff(minute, time '20:00:00', time '21:00:00') as nummins; nummins ---------- 60
Contoh dengan kolom TIMETZ
Contoh tabel berikut TIMETZ_TEST memiliki kolom TIMETZ_VAL (tipe TIMETZ) dengan tiga nilai dimasukkan.
select timetz_val from timetz_test; timetz_val ------------------ 04:00:00+00 00:00:00.5550+00 05:58:00+00
Contoh berikut menemukan perbedaan jumlah jam, antara literal TIMETZ dan timetz_val.
select datediff(hours, timetz '20:00:00 PST', timetz_val) as numhours from timetz_test; numhours ---------- 0 -4 1
Contoh berikut menemukan perbedaan jumlah jam, antara dua nilai TIMETZ literal.
select datediff(hours, timetz '20:00:00 PST', timetz '00:58:00 EST') as numhours; numhours ---------- 1