Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Fungsi EKSTRAK
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.
Sintaks
EXTRACT(datepart FROM source)
Argumen
- datepart
-
Subbidang tanggal atau waktu untuk mengekstrak, seperti hari, bulan, tahun, jam, menit, detik, milidetik, atau mikrodetik. Untuk nilai yang mungkin, lihatBagian tanggal untuk fungsi tanggal atau stempel waktu.
- sumber
-
Kolom atau ekspresi yang mengevaluasi tipe data TIMESTAMP, TIMESTAMPTZ, WAKTU, TIMETZ, INTERVAL TAHUN KE BULAN, atau INTERVAL HARI KE KEDUA.
Jenis pengembalian
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
Contoh berikut menentukan angka minggu untuk penjualan di mana harga yang dibayarkan adalah $10.000 atau lebih. Contoh ini menggunakan data TICKIT. Untuk informasi selengkapnya, lihat Database sampel.
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
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
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 mengekstrak menit dari setiap time_val.
select extract(minute from time_val) as minutes from time_test; minutes ----------- 0 0 58
Contoh berikut mengekstrak jam dari setiap time_val.
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
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 mengekstrak jam dari setiap timetz_val.
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
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