Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Fungsi DATEADD
Menambah nilai DATE, TIME, TIMETZ, atau TIMESTAMP dengan interval tertentu.
Sintaks
DATEADD( datepart, interval, {date|time|timetz|timestamp} )
Argumen
- datepart
-
Bagian tanggal (tahun, bulan, hari, atau jam, misalnya) tempat fungsi beroperasi. Untuk informasi selengkapnya, lihat Bagian tanggal untuk fungsi tanggal atau stempel waktu.
- interval
-
Integer yang menentukan interval (jumlah hari, misalnya) untuk ditambahkan ke ekspresi target. Sebuah integer negatif mengurangi interval.
- tanggal | waktu | timetz | stempel waktu
-
Kolom TANGGAL, WAKTU, TIMETZ, atau TIMESTAMP atau ekspresi yang secara implisit mengkonversi ke TANGGAL, WAKTU, TIMETZ, atau TIMESTAMP. Ekspresi DATE, TIME, TIMETZ, atau TIMESTAMP harus berisi bagian tanggal yang ditentukan.
Jenis pengembalian
TIMESTAMP atau TIME atau TIMETZ tergantung pada tipe data input.
Contoh dengan kolom DATE
Contoh berikut menambahkan 30 hari untuk setiap tanggal di bulan November yang ada di tabel DATE.
select dateadd(day,30,caldate) as novplus30 from date where month='NOV' order by dateid; novplus30 --------------------- 2008-12-01 00:00:00 2008-12-02 00:00:00 2008-12-03 00:00:00 ... (30 rows)
Contoh berikut menambahkan 18 bulan ke nilai tanggal literal.
select dateadd(month,18,'2008-02-28'); date_add --------------------- 2009-08-28 00:00:00 (1 row)
Nama kolom default untuk fungsi DATEADD adalah DATE_ADD. Stempel waktu default untuk nilai tanggal adalah. 00:00:00
Contoh berikut menambahkan 30 menit ke nilai tanggal yang tidak menentukan stempel waktu.
select dateadd(m,30,'2008-02-28'); date_add --------------------- 2008-02-28 00:30:00 (1 row)
Anda dapat memberi nama bagian tanggal secara lengkap atau menyingkatnya. Dalam hal ini, m berarti menit, bukan bulan.
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 menambahkan 5 menit untuk setiap TIME_VAL dalam tabel TIME_TEST.
select dateadd(minute,5,time_val) as minplus5 from time_test; minplus5 --------------- 20:05:00 00:05:00.5550 01:03:00
Contoh berikut menambahkan 8 jam ke nilai waktu literal.
select dateadd(hour, 8, time '13:24:55'); date_add --------------- 21:24:55
Contoh berikut menunjukkan kapan waktu berjalan lebih dari 24:00:00 atau di bawah 00:00:00.
select dateadd(hour, 12, time '13:24:55'); date_add --------------- 01:24:55
Contoh dengan kolom TIMETZ
Nilai output dalam contoh ini ada di UTC yang merupakan zona waktu default.
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 menambahkan 5 menit untuk setiap TIMETZ_VAL dalam tabel TIMETZ_TEST.
select dateadd(minute,5,timetz_val) as minplus5_tz from timetz_test; minplus5_tz --------------- 04:05:00+00 00:05:00.5550+00 06:03:00+00
Contoh berikut menambahkan 2 jam ke nilai timetz literal.
select dateadd(hour, 2, timetz '13:24:55 PST'); date_add --------------- 23:24:55+00
Contoh dengan kolom TIMESTAMP
Nilai output dalam contoh ini ada di UTC yang merupakan zona waktu default.
Contoh tabel berikut TIMESTAMP_TEST memiliki kolom TIMESTAMP_VAL (tipe TIMESTAMP) dengan tiga nilai disisipkan.
SELECT timestamp_val FROM timestamp_test; timestamp_val ------------------ 1988-05-15 10:23:31 2021-03-18 17:20:41 2023-06-02 18:11:12
Contoh berikut menambahkan 20 tahun hanya ke nilai TIMESTAMP_VAL di TIMESTAMP_TEST dari sebelum tahun 2000.
SELECT dateadd(year,20,timestamp_val) FROM timestamp_test WHERE timestamp_val < to_timestamp('2000-01-01 00:00:00', 'YYYY-MM-DD HH:MI:SS'); date_add --------------- 2008-05-15 10:23:31
Contoh berikut menambahkan 5 detik ke nilai stempel waktu literal yang ditulis tanpa indikator detik.
SELECT dateadd(second, 5, timestamp '2001-06-06'); date_add --------------- 2001-06-06 00:00:05
Catatan penggunaan
Fungsi DATEADD (bulan,...) dan ADD_MONTHS menangani tanggal yang jatuh pada akhir bulan secara berbeda:
-
ADD_MONTHS: Jika tanggal yang Anda tambahkan adalah hari terakhir bulan itu, hasilnya selalu hari terakhir dari bulan hasil, terlepas dari panjang bulan. Misalnya, 30 April+1 bulan adalah 31 Mei.
select add_months('2008-04-30',1); add_months --------------------- 2008-05-31 00:00:00 (1 row)
-
DATEADD: Jika ada lebih sedikit hari pada tanggal yang Anda tambahkan daripada di bulan hasil, hasilnya adalah hari yang sesuai dari bulan hasil, bukan hari terakhir bulan itu. Misalnya, 30 April+1 bulan adalah 30 Mei.
select dateadd(month,1,'2008-04-30'); date_add --------------------- 2008-05-30 00:00:00 (1 row)
Fungsi DATEADD menangani tanggal tahun kabisat 02-29 secara berbeda saat menggunakan dateadd (month, 12,...) atau dateadd (year, 1,...).
select dateadd(month,12,'2016-02-29'); date_add --------------------- 2017-02-28 00:00:00 select dateadd(year, 1, '2016-02-29'); date_add --------------------- 2017-03-01 00:00:00