

 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 EKSTRAK
<a name="r_EXTRACT_function"></a>

Fungsi EXTRACT mengembalikan bagian tanggal atau waktu dari nilai TIMESTAMP, TIMESTAMPTZ, TIME, TIMETZ, INTERVAL YEAR TO MONTH, atau INTERVAL DAY TO SECOND. Contohnya termasuk hari, bulan, tahun, jam, menit, detik, milidetik, atau mikrodetik dari stempel waktu.

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

```
EXTRACT(datepart FROM source)
```

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

 *datepart*   
Subbidang tanggal atau waktu untuk mengekstrak, seperti hari, bulan, tahun, jam, menit, detik, milidetik, atau mikrodetik. Untuk nilai yang mungkin, lihat[Bagian tanggal untuk fungsi tanggal atau stempel waktu](r_Dateparts_for_datetime_functions.md). 

 *sumber*   
Kolom atau ekspresi yang mengevaluasi tipe data TIMESTAMP, TIMESTAMPTZ, WAKTU, TIMETZ, INTERVAL TAHUN KE BULAN, atau INTERVAL HARI KE KEDUA.

## Jenis pengembalian
<a name="r_EXTRACT_function-return-type"></a>

INTEGER jika nilai *sumber* mengevaluasi tipe data TIMESTAMP, WAKTU, TIMETZ, INTERVAL TAHUN KE BULAN, atau INTERVAL HARI KE KEDUA.

PRESISI GANDA jika nilai *sumber* mengevaluasi tipe data TIMESTAMPTZ.

## Contoh dengan TIMESTAMP
<a name="r_EXTRACT_function-examples"></a>

Contoh berikut menentukan angka minggu untuk penjualan di mana harga yang dibayarkan adalah \$110.000 atau lebih. Contoh ini menggunakan data TICKIT. Untuk informasi selengkapnya, lihat [Database sampel](c_sampledb.md).

```
select salesid, extract(week from saletime) as weeknum
from sales 
where pricepaid > 9999 
order by 2;

salesid | weeknum
--------+---------
 159073 |       6
 160318 |       8
 161723 |      26
```

Contoh berikut mengembalikan nilai menit dari nilai timestamp literal. 

```
select extract(minute from timestamp '2009-09-09 12:08:43');
            
date_part
-----------
8
```

Contoh berikut mengembalikan nilai milidetik dari nilai timestamp literal. 

```
select extract(ms from timestamp '2009-09-09 12:08:43.101');
            
date_part
-----------
101
```

## Contoh dengan TIMESTAMPTZ
<a name="r_EXTRACT_function-examples-timestamptz"></a>

Contoh berikut mengembalikan nilai tahun dari nilai timestamptz literal. 

```
select extract(year from timestamptz '1.12.1997 07:37:16.00 PST');
            
date_part
-----------
1997
```

## Contoh dengan waktu
<a name="r_EXTRACT_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 mengekstrak menit dari setiap time\$1val.

```
select extract(minute from time_val) as minutes from time_test;
            
minutes
-----------
         0
         0
         58
```

Contoh berikut mengekstrak jam dari setiap time\$1val.

```
select extract(hour from time_val) as hours from time_test;
            
hours
-----------
         20
         0
         0
```

Contoh berikut mengekstrak milidetik dari nilai literal.

```
select extract(ms from time '18:25:33.123456');
            
 date_part
-----------
     123
```

## Contoh dengan TIMETZ
<a name="r_EXTRACT_function-examples-timetz"></a>

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 mengekstrak jam dari setiap timetz\$1val.

```
select extract(hour from timetz_val) as hours from time_test;
            
hours
-----------
         4
         0
         5
```

Contoh berikut mengekstrak milidetik dari nilai literal. Literal tidak dikonversi ke UTC sebelum ekstraksi diproses. 

```
select extract(ms from timetz '18:25:33.123456 EST');
            
 date_part
-----------
     123
```

Contoh berikut mengembalikan jam offset zona waktu dari UTC dari nilai timetz literal. 

```
select extract(timezone_hour from timetz '1.12.1997 07:37:16.00 PDT');
            
date_part
-----------
-7
```

## Contoh dengan INTERVAL TAHUN KE BULAN dan INTERVAL HARI KE KEDUA
<a name="r_EXTRACT_function-examples-interval"></a>

Contoh berikut mengekstrak bagian hari `1` dari INTERVAL DAY TO SECOND yang mendefinisikan 36 jam, yaitu 1 hari 12 jam.

```
select EXTRACT('days' from INTERVAL '36 hours' DAY TO SECOND)
  
 date_part
------------------
 1
```

Contoh berikut mengekstrak bagian bulan `3` dari TAHUN KE BULAN yang mendefinisikan 15 bulan, yaitu 1 tahun 3 bulan.

```
select EXTRACT('month' from INTERVAL '15 months' YEAR TO MONTH)
  
 date_part
------------------
 3
```

Contoh berikut mengekstrak bagian bulan `6` dari 30 bulan yaitu 2 tahun 6 bulan.

```
select EXTRACT('month' from INTERVAL '30' MONTH)
   
 date_part
------------------
 6
```

Contoh berikut mengekstrak bagian jam `2` dari 50 jam yaitu 2 hari 2 jam.

```
select EXTRACT('hours' from INTERVAL '50' HOUR)
  
 date_part
------------------
 2
```

Contoh berikut mengekstrak bagian menit `11` dari 1 jam 11 menit 11.123 detik.

```
select EXTRACT('minute' from INTERVAL '70 minutes 70.123 seconds' MINUTE TO SECOND)
  
 date_part
------------------
 11
```

Contoh berikut mengekstrak bagian detik `1.11` dari 1 hari 1 jam 1 menit 1,11 detik.

```
select EXTRACT('seconds' from INTERVAL '1 day 1:1:1.11' DAY TO SECOND)
  
 date_part
------------------
 1.11
```

Contoh berikut mengekstrak jumlah total jam dalam INTERVAL. Setiap bagian diekstraksi dan ditambahkan ke total.

```
select EXTRACT('days' from INTERVAL '50' HOUR) * 24 + EXTRACT('hours' from INTERVAL '50' HOUR)
 
 ?column?
------------------
 50
```

Contoh berikut mengekstrak jumlah detik dalam INTERVAL. Setiap bagian diekstraksi dan ditambahkan ke total.

```
select EXTRACT('days' from INTERVAL '1 day 1:1:1.11' DAY TO SECOND) * 86400 + 
       EXTRACT('hours' from INTERVAL '1 day 1:1:1.11' DAY TO SECOND) * 3600 +
       EXTRACT('minutes' from INTERVAL '1 day 1:1:1.11' DAY TO SECOND) * 60 + 
       EXTRACT('seconds' from INTERVAL '1 day 1:1:1.11' DAY TO SECOND)
  
 ?column?
------------------
 90061.11
```