Bagian tanggal untuk fungsi tanggal atau stempel waktu - Amazon Redshift

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

Bagian tanggal untuk fungsi tanggal atau stempel waktu

Tabel berikut mengidentifikasi nama bagian tanggal dan waktu bagian dan singkatan yang diterima sebagai argumen untuk fungsi berikut:

  • DATEADD

  • DATEDIFF

  • DATE_PART

  • EKSTRAK

Tanggal paruh waktu atau paruh waktu Singkatan
milenium, milenium mil, mil
abad, berabad-abad c, sen, sen
dekade, dekade Desember, decs
jangka waktu epoch (didukung oleh) EKSTRAK
tahun, tahun y, thn, thn
seperempat, kuartal qtr, qtrs
bulan, bulan mon, mons
minggu, minggu

w

hari dalam seminggu

dayofweek, dow, dw, hari kerja (didukung oleh dan) DATE_PART Fungsi EKSTRAK

Mengembalikan integer dari 0-6, dimulai dengan hari Minggu.

catatan

Bagian tanggal DOW berperilaku berbeda dari bagian tanggal hari minggu (D) yang digunakan untuk string format datetime. D didasarkan pada bilangan bulat 1-7, di mana hari Minggu adalah 1. Untuk informasi selengkapnya, lihat String format datetime.

hari dalam setahun dayofyear, doy, dy, yearday (didukung oleh) EKSTRAK
hari, hari d
jam, jam h, jam, jam
menit, menit m, min, menit
kedua, detik s, detik, detik
milidetik, milidetik ms, msec, msec, mdetik, mdetik, milidetik, milidetik, milidetik, milidetik
mikrodetik, mikrodetik mikrosec, mikrodetik, mikrodetik, usecond, useconds, us, usec, usec
zona waktu, zona waktu_jam, zona waktu_menit Didukung oleh EKSTRAK untuk timestamp dengan zona waktu (TIMESTAMPTZ) saja.

Variasi hasil dengan detik, milidetik, dan mikrodetik

Perbedaan kecil dalam hasil kueri terjadi ketika fungsi tanggal yang berbeda menentukan detik, milidetik, atau mikrodetik sebagai bagian tanggal:

  • Fungsi EXTRACT mengembalikan bilangan bulat untuk bagian tanggal yang ditentukan saja, mengabaikan bagian tanggal tingkat yang lebih tinggi dan lebih rendah. Jika bagian tanggal yang ditentukan adalah detik, milidetik dan mikrodetik tidak termasuk dalam hasil. Jika bagian tanggal yang ditentukan adalah milidetik, detik dan mikrodetik tidak termasuk. Jika bagian tanggal yang ditentukan adalah mikrodetik, detik dan milidetik tidak termasuk.

  • Fungsi DATE_PART mengembalikan bagian detik lengkap dari stempel waktu, terlepas dari bagian tanggal yang ditentukan, mengembalikan nilai desimal atau bilangan bulat sesuai kebutuhan.

Misalnya, bandingkan hasil kueri berikut:

create table seconds(micro timestamp); insert into seconds values('2009-09-21 11:10:03.189717'); select extract(sec from micro) from seconds; date_part ----------- 3 select date_part(sec, micro) from seconds; pgdate_part ------------- 3.189717

Catatan CENTURY, EPOCH, DECADE, dan MIL

CENTURY atau CENTURY

Amazon Redshift menafsirkan CENTURY untuk memulai dengan tahun ## #1 dan diakhiri dengan tahun: ###0

select extract (century from timestamp '2000-12-16 12:21:13'); date_part ----------- 20 select extract (century from timestamp '2001-12-16 12:21:13'); date_part ----------- 21
EPOCH

Implementasi Amazon Redshift EPOCH relatif terhadap 1970-01-01 00:00:00.000 000 terlepas dari zona waktu tempat cluster berada. Anda mungkin perlu mengimbangi hasil dengan perbedaan jam tergantung pada zona waktu di mana cluster berada.

Contoh berikut menunjukkan hal berikut:

  1. Membuat tabel bernama EVENT_EXAMPLE berdasarkan tabel EVENT. Perintah CREATE AS ini menggunakan fungsi DATE_PART untuk membuat kolom tanggal (disebut PGDATE_PART secara default) untuk menyimpan nilai epoch untuk setiap peristiwa.

  2. Memilih kolom dan tipe data EVENT_EXAMPLE dari PG_TABLE_DEF.

  3. Memilih EVENTNAME, STARTTIME, dan PGDATE_PART dari tabel EVENT_EXAMPLE untuk melihat format tanggal dan waktu yang berbeda.

  4. Memilih EVENTNAME dan STARTTIME dari EVENT EXAMPLE apa adanya. Mengonversi nilai epoch di PGDATE_PART menggunakan interval 1 detik ke stempel waktu tanpa zona waktu, dan mengembalikan hasilnya dalam kolom bernama CONVERTED_TIMESTAMP.

create table event_example as select eventname, starttime, date_part(epoch, starttime) from event; select "column", type from pg_table_def where tablename='event_example'; column | type ---------------+----------------------------- eventname | character varying(200) starttime | timestamp without time zone pgdate_part | double precision (3 rows)
select eventname, starttime, pgdate_part from event_example; eventname | starttime | pgdate_part ----------------------+---------------------+------------- Mamma Mia! | 2008-01-01 20:00:00 | 1199217600 Spring Awakening | 2008-01-01 15:00:00 | 1199199600 Nas | 2008-01-01 14:30:00 | 1199197800 Hannah Montana | 2008-01-01 19:30:00 | 1199215800 K.D. Lang | 2008-01-01 15:00:00 | 1199199600 Spamalot | 2008-01-02 20:00:00 | 1199304000 Macbeth | 2008-01-02 15:00:00 | 1199286000 The Cherry Orchard | 2008-01-02 14:30:00 | 1199284200 Macbeth | 2008-01-02 19:30:00 | 1199302200 Demi Lovato | 2008-01-02 19:30:00 | 1199302200 select eventname, starttime, timestamp with time zone 'epoch' + pgdate_part * interval '1 second' AS converted_timestamp from event_example; eventname | starttime | converted_timestamp ----------------------+---------------------+--------------------- Mamma Mia! | 2008-01-01 20:00:00 | 2008-01-01 20:00:00 Spring Awakening | 2008-01-01 15:00:00 | 2008-01-01 15:00:00 Nas | 2008-01-01 14:30:00 | 2008-01-01 14:30:00 Hannah Montana | 2008-01-01 19:30:00 | 2008-01-01 19:30:00 K.D. Lang | 2008-01-01 15:00:00 | 2008-01-01 15:00:00 Spamalot | 2008-01-02 20:00:00 | 2008-01-02 20:00:00 Macbeth | 2008-01-02 15:00:00 | 2008-01-02 15:00:00 The Cherry Orchard | 2008-01-02 14:30:00 | 2008-01-02 14:30:00 Macbeth | 2008-01-02 19:30:00 | 2008-01-02 19:30:00 Demi Lovato | 2008-01-02 19:30:00 | 2008-01-02 19:30:00 ...
DEKADE atau DEKADE

Amazon Redshift menafsirkan DECADE atau DECADECADES DATEPART berdasarkan kalender umum. Misalnya, karena kalender umum dimulai dari tahun 1, dekade pertama (dekade 1) adalah 0001-01-01 hingga 0009-12-31, dan dekade kedua (dekade 2) adalah 0010-01-01 hingga 0019-12-31. Misalnya, dekade 201 membentang dari 2000-01-01 hingga 2009-12-31:

select extract(decade from timestamp '1999-02-16 20:38:40'); date_part ----------- 200 select extract(decade from timestamp '2000-02-16 20:38:40'); date_part ----------- 201 select extract(decade from timestamp '2010-02-16 20:38:40'); date_part ----------- 202
MIL atau MILS

Amazon Redshift menafsirkan MIL untuk memulai dengan hari pertama tahun #001 dan diakhiri dengan hari terakhir tahun ini: #000

select extract (mil from timestamp '2000-12-16 12:21:13'); date_part ----------- 2 select extract (mil from timestamp '2001-12-16 12:21:13'); date_part ----------- 3