

 Amazon Redshift tidak akan lagi mendukung pembuatan Python UDFs baru mulai Patch 198. Python yang ada UDFs akan terus berfungsi hingga 30 Juni 2026. Untuk informasi lebih lanjut, lihat [posting blog](https://aws.amazon.com/blogs/big-data/amazon-redshift-python-user-defined-functions-will-reach-end-of-support-after-june-30-2026/). 

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

# Fungsi DATEADD
<a name="r_DATEADD_function"></a>

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

## Sintaksis
<a name="r_DATEADD_function-synopsis"></a>

```
DATEADD( datepart, interval, {date|time|timetz|timestamp} )
```

## Argumen
<a name="r_DATEADD_function-arguments"></a>

 *datepart*   
Bagian tanggal (tahun, bulan, hari, atau jam, misalnya) tempat fungsi beroperasi. Untuk informasi selengkapnya, lihat [Bagian tanggal untuk fungsi tanggal atau stempel waktu](r_Dateparts_for_datetime_functions.md). 

 *interval*   
Integer yang menentukan interval (jumlah hari, misalnya) untuk ditambahkan ke ekspresi target. Sebuah integer negatif mengurangi interval. 

 *tanggal* *\$1 *waktu* \$1 *timetz \$1 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
<a name="r_DATEADD_function-return-type"></a>

TIMESTAMP atau TIME atau TIMETZ tergantung pada tipe data input.

## Contoh dengan kolom DATE
<a name="r_DATEADD_function-examples"></a>

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\$1ADD. 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
<a name="r_DATEADD_function-examples-time"></a>

Berikut contoh tabel TIME\$1TEST memiliki kolom TIME\$1VAL (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\$1VAL dalam tabel TIME\$1TEST.

```
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
<a name="r_DATEADD_function-examples-timetz"></a>

Nilai output dalam contoh ini ada di UTC yang merupakan zona waktu default. 

Contoh tabel berikut TIMETZ\$1TEST memiliki kolom TIMETZ\$1VAL (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\$1VAL dalam tabel TIMETZ\$1TEST.

```
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
<a name="r_DATEADD_function-examples-timestamp"></a>

Nilai output dalam contoh ini ada di UTC yang merupakan zona waktu default. 

Contoh tabel berikut TIMESTAMP\$1TEST memiliki kolom TIMESTAMP\$1VAL (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\$1VAL di TIMESTAMP\$1TEST 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
<a name="r_DATEADD_usage_notes"></a>

 Fungsi DATEADD (bulan,...) dan ADD\$1MONTHS menangani tanggal yang jatuh pada akhir bulan secara berbeda:
+ ADD\$1MONTHS: Jika tanggal yang Anda tambahkan adalah hari terakhir bulan itu, hasilnya selalu hari terakhir dari bulan hasil, terlepas dari panjang bulan. Misalnya, 30 April\$11 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\$11 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
```