Fungsi DATE_ADD - AWS Clean Rooms

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

Fungsi DATE_ADD

Menambah nilai DATE, TIME, TIMETZ, atau TIMESTAMP dengan interval tertentu.

Sintaksis

DATE_ADD( datepart, interval )

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.

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 date_add(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 date_add(month,18,'2008-02-28'); date_add --------------------- 2009-08-28 00:00:00 (1 row)

Nama kolom default untuk fungsi DATE_ADD 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 date_add(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 date_add(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 date_add(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 date_add(hour, 12, time '13:24:55'); date_add --------------- 01:24:55

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 dimasukkan.

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 date_add(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 date_add(second, 5, timestamp '2001-06-06'); date_add --------------- 2001-06-06 00:00:05

Catatan penggunaan

Fungsi DATE_ADD (bulan,...) dan ADD_MONTHS menangani tanggal yang jatuh pada akhir bulan secara berbeda:

  • ADD_MONTHS: Jika tanggal yang Anda tambahkan adalah hari terakhir dalam sebulan, hasilnya selalu hari terakhir dari bulan hasil, terlepas dari panjang bulannya. 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)
  • DATE_ADD: 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 date_add(month,1,'2008-04-30'); date_add --------------------- 2008-05-30 00:00:00 (1 row)

Fungsi DATE_ADD menangani tanggal tahun kabisat 02-29 secara berbeda saat menggunakan date_add (month, 12,...) atau date_add (year, 1,...).

select date_add(month,12,'2016-02-29'); date_add --------------------- 2017-02-28 00:00:00 select date_add(year, 1, '2016-02-29'); date_add --------------------- 2017-03-01 00:00:00