Topik ini menjelaskan sintaks dan parameter dari fungsi tanggal yang didukung oleh MaxCompute. Topik ini juga memberikan contoh penggunaan fungsi tersebut. Anda dapat memilih fungsi yang sesuai untuk melakukan perhitungan atau konversi tanggal berdasarkan kebutuhan bisnis Anda.
Fungsi | Deskripsi |
Mengembalikan nilai tanggal yang diperoleh setelah sejumlah bulan ditambahkan ke tanggal tertentu. | |
Mengembalikan timestamp saat ini. | |
Mengembalikan zona waktu sistem saat ini. | |
Menambahkan atau mengurangi sejumlah hari ke atau dari nilai tanggal berdasarkan interval yang ditentukan oleh delta. Hanya mendukung perubahan berdasarkan hari. Fungsi DATE_ADD adalah kebalikan dari fungsi | |
Mengubah nilai tanggal berdasarkan unit waktu yang ditentukan oleh datepart dan interval yang ditentukan oleh delta. Perubahan berdasarkan tahun, bulan, hari, jam, menit, atau detik didukung. | |
Mengonversi nilai tanggal menjadi string dalam format tertentu. | |
Menambahkan atau mengurangi sejumlah hari ke atau dari nilai tanggal berdasarkan interval yang ditentukan oleh delta. Fungsi DATE_SUB adalah kebalikan dari fungsi | |
Menghitung perbedaan antara dua nilai tanggal berdasarkan satuan waktu yang ditentukan oleh datepart. | |
Mengembalikan komponen tertentu dari nilai tanggal berdasarkan satuan waktu yang ditentukan oleh datepart. | |
Memotong nilai tanggal berdasarkan satuan waktu yang ditentukan oleh datepart. | |
Mengembalikan hari di mana nilai tanggal jatuh. | |
Mengembalikan komponen hari dari nilai tanggal. | |
Mengembalikan hari dalam seminggu di mana nilai tanggal jatuh. | |
Mengembalikan bilangan bulat yang mewakili hari berurutan dalam setahun. | |
Mengembalikan komponen tertentu dari cap waktu. | |
Mengonversi cap waktu UNIX tipe BIGINT menjadi nilai tanggal tipe DATETIME. | |
Mengonversi cap waktu UTC menjadi cap waktu untuk zona waktu yang ditentukan. | |
Mengembalikan waktu sistem saat ini sebagai nilai tanggal. | |
Mengembalikan komponen jam dari nilai tanggal. | |
Menentukan apakah string tanggal dapat dikonversi menjadi nilai tanggal dalam format tertentu. | |
Mengembalikan hari terakhir dari bulan di mana nilai tanggal berada. | |
Mengembalikan hari terakhir dari bulan di mana nilai tanggal berada. | |
Mengembalikan komponen menit dari nilai tanggal. | |
Mengembalikan bulan di mana nilai tanggal jatuh. | |
Mengembalikan jumlah bulan antara nilai tanggal yang ditentukan. | |
Mengembalikan tanggal hari kerja pertama yang lebih lambat dari nilai tanggal dan sesuai dengan minggu yang ditentukan. | |
Mengembalikan tanggal dan waktu sistem saat ini. | |
Mengembalikan kuartal di mana nilai tanggal berada. | |
Mengembalikan komponen detik dari nilai tanggal. | |
Mengonversi nilai tanggal menjadi string dalam format yang ditentukan. | |
Mengonversi string menjadi nilai tanggal dalam format tertentu. | |
Mengonversi nilai tanggal menjadi cap waktu UNIX yang akurat hingga milidetik. | |
Memotong data tanggal atau waktu sesuai dengan unit waktu yang ditentukan oleh datepart, dan mengembalikan data tipe STRING. | |
Mengonversi nilai tanggal menjadi cap waktu UNIX yang merupakan bilangan bulat. | |
Mengembalikan angka yang mewakili hari dalam seminggu di mana nilai tanggal jatuh. | |
Mengembalikan nomor yang mewakili minggu dalam setahun di mana nilai tanggal berada. | |
Mengembalikan tahun di mana nilai tanggal jatuh. |
Catatan penggunaan
MaxCompute V2.0 menyediakan fungsi tambahan. Jika fungsi yang Anda gunakan melibatkan tipe data baru yang didukung dalam edisi tipe data MaxCompute V2.0, Anda harus mengeksekusi pernyataan SET untuk mengaktifkan edisi tipe data tersebut. Tipe data baru mencakup TINYINT, SMALLINT, INT, FLOAT, VARCHAR, TIMESTAMP, dan BINARY.
Tingkat sesi: Untuk menggunakan edisi tipe data MaxCompute V2.0, Anda harus menambahkan
set odps.sql.type.system.odps2=true;sebelum pernyataan SQL yang ingin Anda eksekusi, lalu commit dan eksekusi bersama-sama.Tingkat proyek: Pemilik proyek dapat mengaktifkan edisi tipe data MaxCompute V2.0 untuk proyek berdasarkan kebutuhan proyek. Konfigurasi akan berlaku setelah 10 hingga 15 menit. Untuk mengaktifkan edisi tipe data pada tingkat proyek, jalankan perintah berikut:
setproject odps.sql.type.system.odps2=true;Untuk informasi lebih lanjut tentang
setproject, lihat Operasi Proyek. Untuk informasi lebih lanjut tentang tindakan pencegahan yang harus Anda ambil ketika mengaktifkan edisi tipe data MaxCompute V2.0 pada tingkat proyek, lihat Edisi Tipe Data.
Data sampel
Bagian ini menyediakan data sampel untuk membantu Anda memahami cara menggunakan fungsi tanggal. Dalam topik ini, sebuah tabel bernama mf_date_fun_t dibuat dan data dimasukkan ke dalam tabel tersebut. Pernyataan sampel:
CREATE TABLE IF NOT EXISTS mf_date_fun_t(
id INT,
date1 DATE,
datetime1 DATETIME,
timestamp1 TIMESTAMP,
date2 DATE,
datetime2 DATETIME,
timestamp2 TIMESTAMP,
date3 STRING,
date4 BIGINT);
INSERT INTO mf_date_fun_t VALUES
(1,DATE'2021-11-29',DATETIME'2021-11-29 00:01:00',TIMESTAMP'2021-01-11 00:00:00.123456789',DATE'2021-10-29',DATETIME'2021-10-29 00:00:00',TIMESTAMP'2021-10-11 00:00:00.123456789','2021-11-20',123456780),
(2,DATE'2021-11-28',DATETIME'2021-11-28 00:02:00',TIMESTAMP'2021-02-11 00:00:00.123456789',DATE'2021-10-29',DATETIME'2021-10-29 00:00:00',TIMESTAMP'2021-10-11 00:00:00.123456789','2021-11-21',123456781),
(3,DATE'2021-11-27',DATETIME'2021-11-27 00:03:00',TIMESTAMP'2021-03-11 00:00:00.123456789',DATE'2021-10-29',DATETIME'2021-10-29 00:00:00',TIMESTAMP'2021-10-11 00:00:00.123456789','2021-11-22',123456782),
(4,DATE'2021-11-26',DATETIME'2021-11-26 00:04:00',TIMESTAMP'2021-04-11 00:00:00.123456789',DATE'2021-10-29',DATETIME'2021-10-29 00:00:00',TIMESTAMP'2021-10-11 00:00:00.123456789','2021-11-23',123456783),
(5,DATE'2021-11-25',DATETIME'2021-11-25 00:05:00',TIMESTAMP'2021-05-11 00:00:00.123456789',DATE'2021-10-29',DATETIME'2021-10-29 00:00:00',TIMESTAMP'2021-10-11 00:00:00.123456789','2021-11-24',123456784),
(6,DATE'2021-11-24',DATETIME'2021-11-24 00:06:00',TIMESTAMP'2021-06-11 00:00:00.123456789',DATE'2021-10-29',DATETIME'2021-10-29 00:00:00',TIMESTAMP'2021-10-11 00:00:00.123456789','2021-11-25',123456785),
(7,DATE'2021-11-23',DATETIME'2021-11-23 00:07:00',TIMESTAMP'2021-07-11 00:00:00.123456789',DATE'2021-10-29',DATETIME'2021-10-29 00:00:00',TIMESTAMP'2021-10-11 00:00:00.123456789','2021-11-26',123456786),
(8,DATE'2021-11-22',DATETIME'2021-11-22 00:08:00',TIMESTAMP'2021-08-11 00:00:00.123456789',DATE'2021-10-29',DATETIME'2021-10-29 00:00:00',TIMESTAMP'2021-10-11 00:00:00.123456789','2021-11-27',123456787),
(9,DATE'2021-11-21',DATETIME'2021-11-21 00:09:00',TIMESTAMP'2021-09-11 00:00:00.123456789',DATE'2021-10-29',DATETIME'2021-10-29 00:00:00',TIMESTAMP'2021-10-11 00:00:00.123456789','2021-11-28',123456788),
(10,DATE'2021-11-20',DATETIME'2021-11-20 00:10:00',TIMESTAMP'2021-10-11 00:00:00.123456789',DATE'2021-10-29',DATETIME'2021-10-29 00:00:00',TIMESTAMP'2021-10-11 00:00:00.123456789','2021-11-29',123456789);Kueri data dari tabel mf_date_fun_t. Pernyataan sampel:
SELECT * FROM mf_date_fun_t;Hasil berikut dikembalikan.
+------------+------------+---------------------+-------------------------+------------+---------------------+-------------------------+------------+------------+
| id | date1 | datetime1 | timestamp1 | date2 | datetime2 | timestamp2 | date3 | date4 |
+------------+------------+---------------------+-------------------------+------------+---------------------+-------------------------+------------+------------+
| 1 | 2021-11-29 | 2021-11-29 00:01:00 | 2021-01-11 00:00:00.123 | 2021-10-29 | 2021-10-29 00:00:00 | 2021-10-11 00:00:00.123 | 2021-11-20 | 123456780 |
| 2 | 2021-11-28 | 2021-11-28 00:02:00 | 2021-02-11 00:00:00.123 | 2021-10-29 | 2021-10-29 00:00:00 | 2021-10-11 00:00:00.123 | 2021-11-21 | 123456781 |
| 3 | 2021-11-27 | 2021-11-27 00:03:00 | 2021-03-11 00:00:00.123 | 2021-10-29 | 2021-10-29 00:00:00 | 2021-10-11 00:00:00.123 | 2021-11-22 | 123456782 |
| 4 | 2021-11-26 | 2021-11-26 00:04:00 | 2021-04-11 00:00:00.123 | 2021-10-29 | 2021-10-29 00:00:00 | 2021-10-11 00:00:00.123 | 2021-11-23 | 123456783 |
| 5 | 2021-11-25 | 2021-11-25 00:05:00 | 2021-05-11 00:00:00.123 | 2021-10-29 | 2021-10-29 00:00:00 | 2021-10-11 00:00:00.123 | 2021-11-24 | 123456784 |
| 6 | 2021-11-24 | 2021-11-24 00:06:00 | 2021-06-11 00:00:00.123 | 2021-10-29 | 2021-10-29 00:00:00 | 2021-10-11 00:00:00.123 | 2021-11-25 | 123456785 |
| 7 | 2021-11-23 | 2021-11-23 00:07:00 | 2021-07-11 00:00:00.123 | 2021-10-29 | 2021-10-29 00:00:00 | 2021-10-11 00:00:00.123 | 2021-11-26 | 123456786 |
| 8 | 2021-11-22 | 2021-11-22 00:08:00 | 2021-08-11 00:00:00.123 | 2021-10-29 | 2021-10-29 00:00:00 | 2021-10-11 00:00:00.123 | 2021-11-27 | 123456787 |
| 9 | 2021-11-21 | 2021-11-21 00:09:00 | 2021-09-11 00:00:00.123 | 2021-10-29 | 2021-10-29 00:00:00 | 2021-10-11 00:00:00.123 | 2021-11-28 | 123456788 |
| 10 | 2021-11-20 | 2021-11-20 00:10:00 | 2021-10-11 00:00:00.123 | 2021-10-29 | 2021-10-29 00:00:00 | 2021-10-11 00:00:00.123 | 2021-11-29 | 123456789 |
+------------+------------+---------------------+-------------------------+------------+---------------------+-------------------------+------------+------------+ADD_MONTHS
Sintaksis
STRING ADD_MONTHS(DATE|DATETIME|TIMESTAMP|STRING <startdate>, INT <num_months>)Deskripsi
Mengembalikan nilai tanggal setelah sejumlah bulan yang ditentukan oleh num_months ditambahkan ke startdate. Fungsi ini merupakan bagian tambahan dari MaxCompute V2.0.
Parameter
Parameter
Diperlukan
Deskripsi
startdate
Ya
Nilai bertipe DATE, DATETIME, TIMESTAMP, atau STRING. Nilai tersebut dalam format
yyyy-mm-dd,yyyy-mm-dd hh:mi:ss, atauyyyy-mm-dd hh:mi:ss.ff3. Jika nilainya bertipe STRING, nilai tersebut harus mencakup setidaknya bagianyyyy-mm-dddan tidak boleh mengandung string tambahan.num_months
Ya
Nilai bertipe INT.
Nilai Kembali
Nilai bertipe STRING dikembalikan. Nilai kembali dalam format
yyyy-mm-dd. Nilai kembali bervariasi berdasarkan aturan berikut:Jika nilai startdate bukan bertipe DATE, DATETIME, TIMESTAMP, atau STRING atau formatnya tidak memenuhi persyaratan, null dikembalikan.
Jika nilai startdate adalah null, kesalahan akan dikembalikan.
Jika nilai num_months adalah null, null dikembalikan.
Contoh
Contoh data statis
-- Nilai kembali adalah 2017-05-14. SELECT ADD_MONTHS('2017-02-14',3); -- Nilai kembali adalah 0017-05-14. SELECT ADD_MONTHS('17-2-14',3); -- Nilai kembali adalah 2017-05-14. SELECT ADD_MONTHS('2017-02-14 21:30:00',3); -- Nilai kembali adalah NULL. SELECT ADD_MONTHS('20170214',3); -- Nilai kembali adalah NULL. SELECT ADD_MONTHS('2017-02-14 21:30:00',null);Contoh data tabel
Konversikan nilai tanggal di kolom date1, datetime1, timestamp1, dan date3 menjadi cap waktu UNIX yang berupa bilangan bulat. Data dalam Data Contoh digunakan dalam contoh ini. Pernyataan sampel:
-- Aktifkan edisi tipe data MaxCompute V2.0. Kirim pernyataan SET berikut bersama dengan pernyataan SQL. SET odps.sql.type.system.odps2=true; SELECT date1, ADD_MONTHS(date1,1) AS date1_add_months, datetime1, ADD_MONTHS(datetime1, 2) AS datetime1_add_months, timestamp1, ADD_MONTHS(timestamp1,3) AS timestamp1_add_months, date3, ADD_MONTHS(date3,4) AS date3_add_months FROM mf_date_fun_t;Hasil berikut dikembalikan.
+------------+------------------+---------------------+----------------------+-------------------------------+-----------------------+------------+------------------+ | date1 | date1_add_months | datetime1 | datetime1_add_months | timestamp1 | timestamp1_add_months | date3 | date3_add_months | +------------+------------------+---------------------+----------------------+-------------------------------+-----------------------+------------+------------------+ | 2021-11-29 | 2021-12-29 | 2021-11-29 00:01:00 | 2022-01-29 | 2021-01-11 00:00:00.123456789 | 2021-04-11 | 2021-11-20 | 2022-03-20 | | 2021-11-28 | 2021-12-28 | 2021-11-28 00:02:00 | 2022-01-28 | 2021-02-11 00:00:00.123456789 | 2021-05-11 | 2021-11-21 | 2022-03-21 | | 2021-11-27 | 2021-12-27 | 2021-11-27 00:03:00 | 2022-01-27 | 2021-03-11 00:00:00.123456789 | 2021-06-11 | 2021-11-22 | 2022-03-22 | | 2021-11-26 | 2021-12-26 | 2021-11-26 00:04:00 | 2022-01-26 | 2021-04-11 00:00:00.123456789 | 2021-07-11 | 2021-11-23 | 2022-03-23 | | 2021-11-25 | 2021-12-25 | 2021-11-25 00:05:00 | 2022-01-25 | 2021-05-11 00:00:00.123456789 | 2021-08-11 | 2021-11-24 | 2022-03-24 | | 2021-11-24 | 2021-12-24 | 2021-11-24 00:06:00 | 2022-01-24 | 2021-06-11 00:00:00.123456789 | 2021-09-11 | 2021-11-25 | 2022-03-25 | | 2021-11-23 | 2021-12-23 | 2021-11-23 00:07:00 | 2022-01-23 | 2021-07-11 00:00:00.123456789 | 2021-10-11 | 2021-11-26 | 2022-03-26 | | 2021-11-22 | 2021-12-22 | 2021-11-22 00:08:00 | 2022-01-22 | 2021-08-11 00:00:00.123456789 | 2021-11-11 | 2021-11-27 | 2022-03-27 | | 2021-11-21 | 2021-12-21 | 2021-11-21 00:09:00 | 2022-01-21 | 2021-09-11 00:00:00.123456789 | 2021-12-11 | 2021-11-28 | 2022-03-28 | | 2021-11-20 | 2021-12-20 | 2021-11-20 00:10:00 | 2022-01-20 | 2021-10-11 00:00:00.123456789 | 2022-01-11 | 2021-11-29 | 2022-03-29 | +------------+------------------+---------------------+----------------------+-------------------------------+-----------------------+------------+------------------+
CURRENT_TIMESTAMP
Sintaksis
TIMESTAMP CURRENT_TIMESTAMP()Deskripsi
Mengembalikan timestamp saat ini. Nilai yang dikembalikan tidak tetap. Fungsi ini merupakan bagian dari MaxCompute V2.0.
Nilai Pengembalian
Nilai dengan tipe TIMESTAMP dikembalikan.
Contoh
-- Nilai pengembalian adalah '2017-08-03 11:50:30.661'. SET odps.sql.type.system.odps2=true; SELECT CURRENT_TIMESTAMP();
CURRENT_TIMEZONE
Sintaksis
STRING CURRENT_TIMEZONE()Deskripsi
Mengembalikan zona waktu sistem saat ini.
Nilai Pengembalian
Nilai dengan tipe STRING dikembalikan.
Contoh
-- Nilai pengembalian adalah Asia/Shanghai. SELECT CURRENT_TIMEZONE();
DATE_ADD
Sintaksis
DATE DATE_ADD(DATE|TIMESTAMP|STRING <startdate>, BIGINT <delta>)Deskripsi
Menambahkan atau mengurangi sejumlah hari yang ditentukan oleh delta ke atau dari nilai tanggal yang ditentukan oleh startdate.
CatatanUntuk menambahkan atau mengurangi sejumlah hari dari waktu saat ini, Anda dapat menggunakan fungsi ini bersama dengan fungsi GETDATE.
Jika Anda perlu menyesuaikan tingkat jam, menit, atau detik secara tepat, lihat fungsi DATEADD. Fungsi ini hanya mendukung penambahan atau pengurangan satu unit waktu, seperti tahun, bulan, hari, jam, menit, atau detik. Untuk penyesuaian beberapa granularitas sekaligus, disarankan menggunakan fungsi yang didefinisikan pengguna.
Logika fungsi ini merupakan kebalikan dari fungsi DATE_SUB.
Parameter
Parameter
Diperlukan
Deskripsi
startdate
Ya
Tanggal awal. Nilai bertipe DATE, DATETIME, atau STRING didukung.
Jika nilai masukan bertipe STRING dan edisi tipe data MaxCompute V1.0 digunakan dalam proyek Anda, nilai masukan akan dikonversi secara implisit menjadi tipe DATE sebelum perhitungan. Nilai masukan bertipe STRING harus mencakup setidaknya bagian
'yyyy-mm-dd', seperti'2019-12-27'.delta
Ya
Jumlah hari yang ingin Anda tambahkan atau kurangi. Nilai parameter ini harus bertipe BIGINT. Jika nilai delta lebih besar dari 0, sejumlah hari akan ditambahkan ke tanggal awal. Jika nilai delta kurang dari 0, sejumlah hari akan dikurangi dari tanggal awal. Jika nilai delta adalah 0, nilai tanggal tetap tidak berubah.
Nilai Kembali
Nilai bertipe DATE dikembalikan. Nilai kembali dalam format
yyyy-mm-dd. Nilai kembali bervariasi berdasarkan aturan berikut:Jika nilai startdate bukan bertipe DATE, DATETIME, atau STRING, kesalahan akan dikembalikan.
Jika nilai startdate adalah null, sistem akan mengembalikan kesalahan.
Jika nilai delta adalah null, maka null akan dikembalikan.
Contoh
Contoh data statis
-- Nilai kembali adalah 2005-03-01. Setelah satu hari ditambahkan, hasilnya melewati hari terakhir Februari. Hari pertama Maret dikembalikan. SELECT DATE_ADD(DATETIME '2005-02-28 00:00:00', 1); -- Nilai kembali adalah 2005-02-27. Satu hari dikurangi. SELECT DATE_ADD(DATE '2005-02-28', -1); -- Nilai kembali adalah 2005-03-20. SET odps.sql.type.system.odps2=false; SELECT DATE_ADD('2005-02-28 00:00:00', 20); -- Jika waktu saat ini adalah 2020-11-17 16:31:44, nilai kembali adalah 2020-11-16. SELECT DATE_ADD(getdate(),-1); -- Nilai kembali adalah NULL. SELECT DATE_ADD('2005-02-28 00:00:00', null);Contoh data tabel
Ubah nilai tanggal di kolom date1, datetime1, dan timestamp1 berdasarkan jumlah hari yang ditentukan oleh delta. Data dalam Data Sampel digunakan dalam contoh ini. Pernyataan sampel:
-- Aktifkan edisi tipe data MaxCompute V2.0. Kirimkan pernyataan SET berikut bersama dengan pernyataan SQL. SET odps.sql.type.system.odps2=true; SELECT date1, DATE_ADD(date1, 1) AS date1_date_add, datetime1, DATE_ADD(datetime1, -1) AS datetime1_date_add, timestamp1, DATE_ADD(timestamp1, 0) AS timestamp1_date_add FROM mf_date_fun_t;Hasil berikut dikembalikan.
+------------+----------------+---------------------+-------------------+-------------------------------+--------------------+ | date1 | date1_date_add | datetime1 | datetime1_date_add| timestamp1 | timestamp1_date_add| +------------+----------------+---------------------+-------------------+-------------------------------+--------------------+ | 2021-11-29 | 2021-11-30 | 2021-11-29 00:01:00 | 2021-11-28 | 2021-01-11 00:00:00.123456789 | 2021-01-11 | | 2021-11-28 | 2021-11-29 | 2021-11-28 00:02:00 | 2021-11-27 | 2021-02-11 00:00:00.123456789 | 2021-02-11 | | 2021-11-27 | 2021-11-28 | 2021-11-27 00:03:00 | 2021-11-26 | 2021-03-11 00:00:00.123456789 | 2021-03-11 | | 2021-11-26 | 2021-11-27 | 2021-11-26 00:04:00 | 2021-11-25 | 2021-04-11 00:00:00.123456789 | 2021-04-11 | | 2021-11-25 | 2021-11-26 | 2021-11-25 00:05:00 | 2021-11-24 | 2021-05-11 00:00:00.123456789 | 2021-05-11 | | 2021-11-24 | 2021-11-25 | 2021-11-24 00:06:00 | 2021-11-23 | 2021-06-11 00:00:00.123456789 | 2021-06-11 | | 2021-11-23 | 2021-11-24 | 2021-11-23 00:07:00 | 2021-11-22 | 2021-07-11 00:00:00.123456789 | 2021-07-11 | | 2021-11-22 | 2021-11-23 | 2021-11-22 00:08:00 | 2021-11-21 | 2021-08-11 00:00:00.123456789 | 2021-08-11 | | 2021-11-21 | 2021-11-22 | 2021-11-21 00:09:00 | 2021-11-20 | 2021-09-11 00:00:00.123456789 | 2021-09-11 | | 2021-11-20 | 2021-11-21 | 2021-11-20 00:10:00 | 2021-11-19 | 2021-10-11 00:00:00.123456789 | 2021-10-11 | +------------+----------------+---------------------+-------------------+-------------------------------+--------------------+
DATEADD
Sintaksis
DATE|DATETIME DATEADD(DATE|DATETIME|TIMESTAMP <date>, BIGINT <delta>, STRING <datepart>)Deskripsi
Mengubah nilai tanggal berdasarkan unit waktu yang ditentukan oleh datepart dan interval yang ditentukan oleh delta. Untuk menambahkan atau mengurangi interval ke atau dari waktu saat ini, Anda dapat menggunakan fungsi ini dengan fungsi GETDATE.
Parameter
Parameter
Diperlukan
Deskripsi
date
Ya
Nilai tanggal bertipe DATE, DATETIME, atau TIMESTAMP. Nilai bertipe STRING secara implisit dikonversi menjadi nilai bertipe DATETIME sebelum perhitungan jika format nilainya sesuai dengan format tipe DATETIME
yyyy-mm-dd hh:mi:ss, seperti2021-08-28 00:00:00, dan edisi tipe data MaxCompute V1.0 digunakan.delta
Ya
Interval yang ingin Anda tambahkan atau kurangi dari komponen tertentu dari nilai tanggal. Nilai parameter ini harus bertipe BIGINT. Jika nilai delta lebih besar dari 0, interval ditambahkan ke nilai tanggal. Sebaliknya, interval dikurangi dari nilai tanggal. Jika nilai input bertipe STRING atau DOUBLE, nilai tersebut secara implisit dikonversi menjadi nilai bertipe BIGINT sebelum perhitungan.
CatatanJika Anda menambahkan atau mengurangi interval yang ditentukan oleh delta berdasarkan unit waktu yang ditentukan oleh datepart, carry atau return pada komponen tanggal yang lebih signifikan mungkin terjadi. Bagian tahun, bulan, jam, menit, dan detik dihitung sesuai dengan sistem numeral basis-10, basis-12, basis-24, dan basis-60, masing-masing.
Jika fungsi DATEADD menambahkan interval yang ditentukan oleh delta ke komponen bulan dari nilai tanggal dan operasi ini tidak menyebabkan overflow pada komponen hari, nilai komponen hari dipertahankan. Sebaliknya, nilai komponen hari disetel ke hari terakhir dari bulan yang ditentukan.
datepart
Ya
Bagian tanggal yang ingin Anda ubah dalam nilai tanggal. Nilainya adalah konstanta bertipe STRING. Jika format nilai input tidak valid atau nilai input bukan konstanta bertipe STRING, kesalahan akan dikembalikan.
Nilai parameter ini ditentukan sesuai dengan aturan konversi antara tipe STRING dan DATETIME. Nilai
yyyymenunjukkan komponen tahun dari nilai tanggal. Nilaimmmenunjukkan komponen bulan dari nilai tanggal. Nilaiddmenunjukkan komponen hari dari nilai tanggal. Untuk informasi lebih lanjut tentang aturan konversi tipe, lihat Konversi tipe. Format Tanggal/Waktu Diperluas (EDTF) juga didukung, seperti-year,-month,-mon,-day, atau-hour.Nilai Kembali
Nilai bertipe DATE atau DATETIME dikembalikan. Nilai kembali dalam format
yyyy-mm-ddatauyyyy-mm-dd hh:mi:ss. Nilai kembali bervariasi berdasarkan aturan berikut:Jika nilai date bukan bertipe DATE, DATETIME, atau TIMESTAMP, kesalahan dikembalikan.
Jika nilai date adalah null, kesalahan dikembalikan.
Jika nilai delta atau datepart adalah null, null dikembalikan.
Contoh
Contoh data statis
Contoh 1: Penggunaan umum
-- Nilai kembali adalah 2005-03-01 00:00:00. Setelah satu hari ditambahkan, hasilnya melebihi hari terakhir Februari. Hari pertama Maret dikembalikan. SELECT DATEADD(DATETIME '2005-02-28 00:00:00', 1, 'dd'); -- Nilai kembali adalah 2005-02-27 00:00:00. Satu hari dikurangi. SELECT DATEADD(DATETIME '2005-02-28 00:00:00', -1, 'dd'); -- Nilai kembali adalah 2006-10-28 00:00:00. Setelah 20 bulan ditambahkan, bulan meluap, dan nilai tahun bertambah 1. SELECT DATEADD(DATETIME '2005-02-28 00:00:00', 20, 'mm'); -- Nilai kembali adalah 2005-03-28 00:00:00. SELECT DATEADD(DATETIME '2005-02-28 00:00:00', 1, 'mm'); -- Nilai kembali adalah 2005-02-28 00:00:00. Februari 2005 hanya memiliki 28 hari. Oleh karena itu, hari terakhir Februari dikembalikan. SELECT DATEADD(DATETIME '2005-01-29 00:00:00', 1, 'mm'); -- Nilai kembali adalah 2005-02-28 00:00:00. SELECT DATEADD(DATETIME '2005-03-30 00:00:00', -1, 'mm'); -- Nilai kembali adalah 2005-03-18. SELECT DATEADD(DATE '2005-02-18', 1, 'mm'); -- Aktifkan edisi tipe data MaxCompute V2.0. Kirim pernyataan SET berikut bersama dengan pernyataan SQL. Nilai kembali adalah 2005-03-18 00:00:00.0. SET odps.sql.type.system.odps2=true; SELECT DATEADD(TIMESTAMP '2005-02-18 00:00:00', 1, 'mm'); -- Jika waktu saat ini adalah 2020-11-17 16:31:44, nilai kembali adalah 2020-11-16 16:31:44. SELECT DATEADD(GETDATE(),-1,'dd'); -- Nilai kembali adalah NULL. SELECT DATEADD(DATE '2005-02-18', 1, null); -- Nilai kembali adalah 2005-03-30 02:24:00, dengan 3 jam dikurangi. SELECT DATEADD(DATETIME '2005-03-30 05:24:00', -3, 'hh'); -- Nilai kembali adalah 2005-03-30 04:54:00, dengan 30 menit dikurangi. SELECT DATEADD(DATETIME '2005-03-30 05:24:00', -30, 'mi'); -- Nilai kembali adalah 2005-03-30 05:23:30, dengan 30 detik dikurangi. SELECT DATEADD(DATETIME '2005-03-30 05:24:00', -30, 'ss');Contoh 2: Penggunaan DATEADD di mana nilai bertipe DATETIME dinyatakan sebagai konstanta.
Dalam pernyataan SQL MaxCompute, nilai bertipe DATETIME tidak dapat langsung dinyatakan sebagai konstanta. Pernyataan berikut menggunakan ekspresi tidak valid untuk nilai bertipe DATETIME:
SELECT DATEADD(2005-03-30 00:00:00, -1, 'mm');Untuk mendeskripsikan konstanta bertipe DATETIME, gunakan ekspresi valid untuk nilai bertipe DATETIME dalam pernyataan berikut:
-- Konversi eksplisit konstanta bertipe STRING menjadi tipe DATETIME. Nilai kembali adalah 2005-02-28 00:00:00. SELECT DATEADD(CAST("2005-03-30 00:00:00" AS datetime), -1, 'mm');Contoh 3: Nilai input bertipe STRING.
-- Nilai input bertipe STRING tetapi tidak sesuai dengan format tipe DATETIME. Akibatnya, kesalahan dikembalikan. SELECT DATEADD('2021-08-27',1,'dd'); -- Nilai input bertipe STRING dan sesuai dengan format tipe DATETIME, dan edisi tipe data MaxCompute V1.0 digunakan dalam proyek Anda. Nilai kembali adalah 2005-03-01 00:00:00. SET odps.sql.type.system.odps2=false; SELECT DATEADD('2005-02-28 00:00:00', 1, 'dd');
Contoh data tabel
Ubah nilai tanggal di kolom date1, datetime1, dan timestamp1 berdasarkan unit waktu yang ditentukan oleh datepart dan interval yang ditentukan oleh delta. Data dalam Data Sampel digunakan dalam contoh ini. Pernyataan sampel:
-- Aktifkan edisi tipe data MaxCompute V2.0. Kirim pernyataan SET berikut bersama dengan pernyataan SQL. SET odps.sql.type.system.odps2=true; SELECT date1, DATEADD(date1,1,'dd') AS date1_dateadd, datetime1, DATEADD(datetime1,1,'mm') AS datetime1_dateadd, timestamp1, DATEADD(timestamp1,-1,'yyyy') AS timestamp1_dateadd FROM mf_date_fun_t;Hasil berikut dikembalikan.
+------------+---------------+---------------------+---------------------+-------------------------------+-------------------------------+ | date1 | date1_dateadd | datetime1 | datetime1_dateadd | timestamp1 | timestamp1_dateadd | +------------+---------------+---------------------+---------------------+-------------------------------+-------------------------------+ | 2021-11-29 | 2021-11-30 | 2021-11-29 00:01:00 | 2021-12-29 00:01:00 | 2021-01-11 00:00:00.123456789 | 2020-01-11 00:00:00.123456789 | | 2021-11-28 | 2021-11-29 | 2021-11-28 00:02:00 | 2021-12-28 00:02:00 | 2021-02-11 00:00:00.123456789 | 2020-02-11 00:00:00.123456789 | | 2021-11-27 | 2021-11-28 | 2021-11-27 00:03:00 | 2021-12-27 00:03:00 | 2021-03-11 00:00:00.123456789 | 2020-03-11 00:00:00.123456789 | | 2021-11-26 | 2021-11-27 | 2021-11-26 00:04:00 | 2021-12-26 00:04:00 | 2021-04-11 00:00:00.123456789 | 2020-04-11 00:00:00.123456789 | | 2021-11-25 | 2021-11-26 | 2021-11-25 00:05:00 | 2021-12-25 00:05:00 | 2021-05-11 00:00:00.123456789 | 2020-05-11 00:00:00.123456789 | | 2021-11-24 | 2021-11-25 | 2021-11-24 00:06:00 | 2021-12-24 00:06:00 | 2021-06-11 00:00:00.123456789 | 2020-06-11 00:00:00.123456789 | | 2021-11-23 | 2021-11-24 | 2021-11-23 00:07:00 | 2021-12-23 00:07:00 | 2021-07-11 00:00:00.123456789 | 2020-07-11 00:00:00.123456789 | | 2021-11-22 | 2021-11-23 | 2021-11-22 00:08:00 | 2021-12-22 00:08:00 | 2021-08-11 00:00:00.123456789 | 2020-08-11 00:00:00.123456789 | | 2021-11-21 | 2021-11-22 | 2021-11-21 00:09:00 | 2021-12-21 00:09:00 | 2021-09-11 00:00:00.123456789 | 2020-09-11 00:00:00.123456789 | | 2021-11-20 | 2021-11-21 | 2021-11-20 00:10:00 | 2021-12-20 00:10:00 | 2021-10-11 00:00:00.123456789 | 2020-10-11 00:00:00.123456789 | +------------+---------------+---------------------+---------------------+-------------------------------+-------------------------------+
DATE_FORMAT
Sintaksis
STRING DATE_FORMAT(DATE|TIMESTAMP|STRING <date>, STRING <format>)Deskripsi
Mengonversi nilai tanggal menjadi string dalam format tertentu.
Parameter
Parameter
Diperlukan
Deskripsi
date
Ya
Nilai tanggal yang ingin Anda konversi. Nilai tanggal dapat berupa tipe DATE, TIMESTAMP, atau STRING.
Nilai tanggal bertipe DATE atau STRING hanya didukung ketika edisi tipe data yang kompatibel dengan Hive diaktifkan. Anda dapat menjalankan perintah
set odps.sql.hive.compatible=true;untuk mengaktifkan edisi tipe data yang kompatibel dengan Hive.Jika nilai tanggal adalah tipe STRING, hanya format berikut yang didukung:
'yyyy-MM-dd', seperti'2019-12-27'.'yyyy-MM-dd hh:mm:ss', seperti'2019-12-27 12:23:10'.'yyyy-MM-dd hh:mm:ss.SSS', seperti'2019-12-27 12:23:10.123'.
format
Ya
Konstanta bertipe STRING. format menentukan format tanggal, seperti
yyyy-MM-dd hh:mm:ss:SSSdanyyyy-MM-dd hh:mi:ss:SSS. Nilai tersebut terdiri dari komponen berikut:YYYYatauyyyy: tahun. yyyy mewakili tahun kalender dan YYYY mewakili tahun minggu.CatatanTahun minggu mungkin tidak sesuai dengan tahun sebenarnya. Berhati-hatilah saat menggunakan format tahun minggu.
MM: bulan.mm: menit.dd: hari.HH: jam yang dinyatakan dalam sistem 24 jam.hh: jam yang dinyatakan dalam sistem 12 jam.mi: menit.ss: detik.SSS: milidetik.
PentingJika edisi tipe data yang kompatibel dengan Hive dinonaktifkan, baik
HHmaupunhhmenunjukkan bahwa sistem24 jam digunakan. Dalam hal ini, format tanggal harusyyyy-MM-dd hh:mi:ss. Jikayyyy-MM-dd hh:mm:ssdigunakan, komponenmmmengambil nilai yang sama dengan komponen MM.Jika edisi tipe data yang kompatibel dengan Hive diaktifkan,
HHmenunjukkan bahwa sistem 24 jam digunakan, danhhmenunjukkan bahwa sistem 12 jam digunakan. Dalam hal ini, format tanggal harusyyyy-MM-dd hh:mm:ss. Jikayyyy-MM-dd hh:mi:ssdigunakan, null dikembalikan.
Nilai Pengembalian
Nilai bertipe STRING dikembalikan. Nilai pengembalian bervariasi berdasarkan aturan berikut:
Jika nilai date bukan bertipe DATE atau TIMESTAMP, null dikembalikan.
Jika nilai date adalah null, kesalahan dikembalikan.
Jika nilai format adalah null, null dikembalikan.
Contoh
Contoh data statis
-- Aktifkan edisi tipe data yang kompatibel dengan Hive. Kirimkan pernyataan SET berikut bersama dengan pernyataan SQL. SET odps.sql.hive.compatible=true; -- Jika waktu saat ini adalah 2022-04-24 15:49, nilai pengembalian adalah 2022-04-24 03:49:01.902. SELECT DATE_FORMAT(FROM_UTC_TIMESTAMP(CURRENT_TIMESTAMP(), 'UTC'),'yyyy-MM-dd hh:mm:ss.SSS'); -- Nilai pengembalian adalah 2022-04-24. SELECT DATE_FORMAT('2022-04-24','yyyy-MM-dd');Contoh data tabel
Konversikan nilai tanggal di kolom datetime1 dan timestamp1 menjadi string dalam format tertentu. Data dalam Data Sampel digunakan dalam contoh ini. Pernyataan sampel:
-- Aktifkan edisi tipe data yang kompatibel dengan Hive dan edisi tipe data MaxCompute V2.0. Kirimkan pernyataan SET berikut bersama dengan pernyataan SQL. SET odps.sql.hive.compatible=true; SET odps.sql.type.system.odps2=true; SELECT datetime1, timestamp1, DATE_FORMAT(datetime1,'yyyy/MM/dd'), DATE_FORMAT(datetime1,'yyyy/MM/dd HH:mm:ss'), DATE_FORMAT(timestamp1,'yyyy/MM/dd HH:mm:ss') FROM mf_date_fun_t;Hasil berikut dikembalikan.
+------------+------------+-----+-----+-----+ | datetime1 | timestamp1 | _c2 | _c3 | _c4 | +------------+------------+-----+-----+-----+ | 2021-11-29 00:01:00 | 2021-01-11 00:00:00.123456789 | 2021/11/29 | 2021/11/29 00:01:00 | 2021/01/11 00:00:00 | | 2021-11-28 00:02:00 | 2021-02-11 00:00:00.123456789 | 2021/11/28 | 2021/11/28 00:02:00 | 2021/02/11 00:00:00 | | 2021-11-27 00:03:00 | 2021-03-11 00:00:00.123456789 | 2021/11/27 | 2021/11/27 00:03:00 | 2021/03/11 00:00:00 | | 2021-11-26 00:04:00 | 2021-04-11 00:00:00.123456789 | 2021/11/26 | 2021/11/26 00:04:00 | 2021/04/11 00:00:00 | | 2021-11-25 00:05:00 | 2021-05-11 00:00:00.123456789 | 2021/11/25 | 2021/11/25 00:05:00 | 2021/05/11 00:00:00 | | 2021-11-24 00:06:00 | 2021-06-11 00:00:00.123456789 | 2021/11/24 | 2021/11/24 00:06:00 | 2021/06/11 00:00:00 | | 2021-11-23 00:07:00 | 2021-07-11 00:00:00.123456789 | 2021/11/23 | 2021/11/23 00:07:00 | 2021/07/11 00:00:00 | | 2021-11-22 00:08:00 | 2021-08-11 00:00:00.123456789 | 2021/11/22 | 2021/11/22 00:08:00 | 2021/08/11 00:00:00 | | 2021-11-21 00:09:00 | 2021-09-11 00:00:00.123456789 | 2021/11/21 | 2021/11/21 00:09:00 | 2021/09/11 00:00:00 | | 2021-11-20 00:10:00 | 2021-10-11 00:00:00.123456789 | 2021/11/20 | 2021/11/20 00:10:00 | 2021/10/11 00:00:00 | +------------+------------+-----+-----+-----+
DATE_SUB
Sintaksis
DATE DATE_SUB(DATE|TIMESTAMP|STRING <startdate>, BIGINT <delta>)Deskripsi
Menambahkan atau mengurangi sejumlah hari yang ditentukan oleh delta ke atau dari nilai tanggal yang ditentukan oleh startdate.
CatatanUntuk menambahkan atau mengurangi sejumlah hari ke atau dari waktu saat ini, Anda dapat menggunakan fungsi ini dengan fungsi GETDATE.
Jika Anda perlu melakukan penyesuaian yang tepat pada tingkat jam, menit, atau detik, lihat fungsi DATEADD. Fungsi ini hanya mendukung penambahan atau pengurangan satu unit di antara tahun, bulan, hari, jam, menit, atau detik. Jika Anda perlu menyesuaikan beberapa granularitas secara bersamaan, kami sarankan menggunakan fungsi yang ditentukan pengguna.
Logika fungsi ini berlawanan dengan fungsi DATE_ADD.
Parameter
Parameter
Diperlukan
Deskripsi
startdate
Ya
Tanggal awal. Nilai bertipe DATE, DATETIME, atau STRING didukung. Jika nilai input bertipe STRING dan edisi tipe data MaxCompute V1.0 digunakan dalam proyek Anda, nilai input akan dikonversi implisit ke tipe DATE sebelum perhitungan. Nilai bertipe STRING harus mencakup setidaknya bagian
'yyyy-mm-dd', seperti'2019-12-27'.delta
Ya
Jumlah hari yang ingin Anda tambahkan atau kurangi. Nilai parameter ini harus bertipe BIGINT. Jika nilai delta lebih besar dari 0, sejumlah hari akan dikurangi dari tanggal awal. Jika nilai delta kurang dari 0, sejumlah hari akan ditambahkan ke tanggal awal. Jika nilai delta adalah 0, nilai tanggal tetap tidak berubah.
Nilai Kembali
Nilai bertipe DATE dikembalikan. Nilai kembali dalam format
yyyy-mm-dd. Nilai kembali bervariasi berdasarkan aturan berikut:Jika nilai startdate bukan bertipe DATE, DATETIME, atau STRING, kesalahan akan dikembalikan.
Jika nilai startdate adalah null, kesalahan akan dikembalikan.
Jika nilai delta adalah null, null akan dikembalikan.
Contoh
Contoh data statis
-- Aktifkan edisi tipe data MaxCompute V2.0. Kirimkan pernyataan SET berikut bersama dengan pernyataan SQL. SET odps.sql.type.system.odps2=true; -- Nilai kembali adalah 2005-02-28. Satu hari dikurangi. Hari terakhir Februari dikembalikan. SELECT DATE_SUB(datetime '2005-03-01 00:00:00', 1); -- Nilai kembali adalah 2005-03-01. Satu hari ditambahkan. SELECT DATE_SUB(date '2005-02-28', -1); -- Nilai kembali adalah 2005-02-27. Dua hari dikurangi. SET odps.sql.type.system.odps2=false; SELECT DATE_SUB('2005-03-01 00:00:00', 2); -- Jika waktu saat ini adalah 2021-09-10 16:31:44, nilai kembali adalah 2021-09-09. SELECT DATE_SUB(GETDATE(),1); -- Nilai kembali adalah NULL. SELECT DATE_SUB('2005-03-01 00:00:00', null);Contoh data tabel
Ubah nilai tanggal di kolom date1, datetime1, dan timestamp1 berdasarkan jumlah hari yang ditentukan oleh delta. Data dalam Data Sampel digunakan dalam contoh ini. Pernyataan sampel:
-- Aktifkan edisi tipe data MaxCompute V2.0. Kirimkan pernyataan SET berikut bersama dengan pernyataan SQL. SET odps.sql.type.system.odps2=true; SELECT date1, DATE_SUB(date1,1) AS date1_date_sub, datetime1, DATE_SUB(datetime1,-1) AS datetime1_date_sub, timestamp1, DATE_SUB(timestamp1,0) AS timestamp1_date_sub FROM mf_date_fun_t;Hasil berikut dikembalikan.
+------------+----------------+---------------------+--------------------+-------------------------------+---------------------+ | date1 | date1_date_sub | datetime1 | datetime1_date_sub | timestamp1 | timestamp1_date_sub | +------------+----------------+---------------------+--------------------+-------------------------------+---------------------+ | 2021-11-29 | 2021-11-28 | 2021-11-29 00:01:00 | 2021-11-30 | 2021-01-11 00:00:00.123456789 | 2021-01-11 | | 2021-11-28 | 2021-11-27 | 2021-11-28 00:02:00 | 2021-11-29 | 2021-02-11 00:00:00.123456789 | 2021-02-11 | | 2021-11-27 | 2021-11-26 | 2021-11-27 00:03:00 | 2021-11-28 | 2021-03-11 00:00:00.123456789 | 2021-03-11 | | 2021-11-26 | 2021-11-25 | 2021-11-26 00:04:00 | 2021-11-27 | 2021-04-11 00:00:00.123456789 | 2021-04-11 | | 2021-11-25 | 2021-11-24 | 2021-11-25 00:05:00 | 2021-11-26 | 2021-05-11 00:00:00.123456789 | 2021-05-11 | | 2021-11-24 | 2021-11-23 | 2021-11-24 00:06:00 | 2021-11-25 | 2021-06-11 00:00:00.123456789 | 2021-06-11 | | 2021-11-23 | 2021-11-22 | 2021-11-23 00:07:00 | 2021-11-24 | 2021-07-11 00:00:00.123456789 | 2021-07-11 | | 2021-11-22 | 2021-11-21 | 2021-11-22 00:08:00 | 2021-11-23 | 2021-08-11 00:00:00.123456789 | 2021-08-11 | | 2021-11-21 | 2021-11-20 | 2021-11-21 00:09:00 | 2021-11-22 | 2021-09-11 00:00:00.123456789 | 2021-09-11 | | 2021-11-20 | 2021-11-19 | 2021-11-20 00:10:00 | 2021-11-21 | 2021-10-11 00:00:00.123456789 | 2021-10-11 | +------------+----------------+---------------------+--------------------+-------------------------------+---------------------+
DATEDIFF
Sintaksis
BIGINT DATEDIFF(DATE|DATETIME|TIMESTAMP <date1>, DATE|DATETIME|TIMESTAMP <date2>, STRING <datepart>)Deskripsi
Menghitung perbedaan antara date1 dan date2. Perbedaan diukur dalam satuan waktu yang ditentukan oleh datepart.
Parameter
Parameter
Wajib
Deskripsi
date1 dan date2
Ya
Nilai bertipe DATE, DATETIME, atau TIMESTAMP. Parameter ini menentukan pengurang dan yang dikurangi. Jika nilai input bertipe STRING dan edisi tipe data MaxCompute V1.0 digunakan dalam proyek Anda, nilai input secara implisit dikonversi ke tipe DATETIME sebelum perhitungan.
CatatanHanya edisi tipe data MaxCompute V2.0 yang mendukung tipe TIMESTAMP. Untuk informasi lebih lanjut, lihat Edisi tipe data MaxCompute V2.0.
datepart
Tidak
Satuan waktu, yaitu konstanta bertipe STRING.
Jika Anda mengaktifkan edisi tipe data MaxCompute V2.0, Anda dapat membiarkan datepart kosong. Nilai default: day. Untuk informasi lebih lanjut tentang edisi tipe data MaxCompute V2.0, lihat Edisi tipe data. EDTF juga didukung, seperti
-year,-month,-mon,-day, atau-hour.CatatanFungsi ini mengabaikan unit yang lebih rendah berdasarkan satuan waktu yang ditentukan oleh datepart dan kemudian menghitung hasilnya.
Nilai Kembali
Nilai bertipe BIGINT dikembalikan. Nilai kembali bervariasi berdasarkan aturan berikut:
Jika nilai dari date1 atau date2 bukan bertipe DATE, DATETIME, atau TIMESTAMP, kesalahan akan dikembalikan.
Jika date1 kurang dari date2, nilai kembali adalah negatif.
Jika nilai dari date1 atau date2 adalah null, null akan dikembalikan.
Jika nilai dari datepart adalah null, null akan dikembalikan.
Contoh
Contoh data statis
Contoh 1
SET odps.sql.type.system.odps2=true; SELECT DATEDIFF(TIMESTAMP '2006-01-01 00:00:00', TIMESTAMP '2005-12-31 23:59:59', 'dd');Hasil berikut dikembalikan.
+------------+ | _c0 | +------------+ | 1 | +------------+Contoh 2
SET odps.sql.type.system.odps2=true; SELECT DATEDIFF(TIMESTAMP '2006-01-01 00:00:00', TIMESTAMP '2005-12-31 23:59:59', 'mm');Hasil berikut dikembalikan.
+------------+ | _c0 | +------------+ | 1 | +------------+Contoh 3
SELECT DATEDIFF(DATETIME '2013-05-31 13:00:00', DATETIME '2013-05-31 12:30:00','ss');Hasil berikut dikembalikan.
+------------+ | _c0 | +------------+ | 1800 | +------------+Contoh 4
SET odps.sql.type.system.odps2 = false; SELECT DATEDIFF('2013-05-31 13:00:00','2013-05-31 12:30:00','mi');Hasil berikut dikembalikan.
+------------+ | _c0 | +------------+ | 30 | +------------+Contoh 5
-- Nilai tanggal yang akurat hingga milidetik tidak mengadopsi format DATETIME standar dan tidak dapat dikonversi secara implisit menjadi tipe DATETIME. Dalam hal ini, konversi eksplisit diperlukan. SELECT DATEDIFF( TO_DATE('2018-06-04 19:33:23.250','yyyy-mm-dd hh:mi:ss.ff3'), TO_DATE('2018-06-04 19:33:23.234','yyyy-mm-dd hh:mi:ss.ff3'), 'ff3');Hasil berikut dikembalikan.
+------------+ | _c0 | +------------+ | 16 | +------------+Contoh 6
SET odps.sql.type.system.odps2=true; SELECT DATEDIFF(DATE '2013-05-21',DATE '2013-05-10',NULL);Hasil berikut dikembalikan.
+------------+ | _c0 | +------------+ | NULL | +------------+
Contoh data tabel
Hitung perbedaan antara nilai-nilai dalam kolom date1 dan date2, antara nilai-nilai dalam kolom datetime1 dan datetime2, serta antara nilai-nilai dalam kolom timestamp1 dan timestamp2. Data dalam Data Sampel digunakan dalam contoh ini. Pernyataan sampel:
-- Aktifkan edisi tipe data MaxCompute V2.0. Kirimkan pernyataan SET berikut bersama dengan pernyataan SQL. SET odps.sql.type.system.odps2 = true; SELECT date1, date2, DATEDIFF(date1,date2,'dd') AS date1_date2_datediff, datetime1, datetime2, DATEDIFF(datetime1,datetime2,'dd') AS datetime1_datetime2_datediff, timestamp1, timestamp2, DATEDIFF(timestamp1,timestamp2,'mm') AS timestamp1_timestamp2_datediff FROM mf_date_fun_t;Hasil berikut dikembalikan.
+------------+------------+----------------------+---------------------+---------------------+------------------------------+-------------------------------+-------------------------------+--------------------------------+ | date1 | date2 | date1_date2_datediff | datetime1 | datetime2 | datetime1_datetime2_datediff | timestamp1 | timestamp2 | timestamp1_timestamp2_datediff | +------------+------------+----------------------+---------------------+---------------------+------------------------------+-------------------------------+-------------------------------+--------------------------------+ | 2021-11-29 | 2021-10-29 | 31 | 2021-11-29 00:01:00 | 2021-10-29 00:00:00 | 31 | 2021-01-11 00:00:00.123456789 | 2021-10-11 00:00:00.123456789 | -9 | | 2021-11-28 | 2021-10-29 | 30 | 2021-11-28 00:02:00 | 2021-10-29 00:00:00 | 30 | 2021-02-11 00:00:00.123456789 | 2021-10-11 00:00:00.123456789 | -8 | | 2021-11-27 | 2021-10-29 | 29 | 2021-11-27 00:03:00 | 2021-10-29 00:00:00 | 29 | 2021-03-11 00:00:00.123456789 | 2021-10-11 00:00:00.123456789 | -7 | | 2021-11-26 | 2021-10-29 | 28 | 2021-11-26 00:04:00 | 2021-10-29 00:00:00 | 28 | 2021-04-11 00:00:00.123456789 | 2021-10-11 00:00:00.123456789 | -6 | | 2021-11-25 | 2021-10-29 | 27 | 2021-11-25 00:05:00 | 2021-10-29 00:00:00 | 27 | 2021-05-11 00:00:00.123456789 | 2021-10-11 00:00:00.123456789 | -5 | | 2021-11-24 | 2021-10-29 | 26 | 2021-11-24 00:06:00 | 2021-10-29 00:00:00 | 26 | 2021-06-11 00:00:00.123456789 | 2021-10-11 00:00:00.123456789 | -4 | | 2021-11-23 | 2021-10-29 | 25 | 2021-11-23 00:07:00 | 2021-10-29 00:00:00 | 25 | 2021-07-11 00:00:00.123456789 | 2021-10-11 00:00:00.123456789 | -3 | | 2021-11-22 | 2021-10-29 | 24 | 2021-11-22 00:08:00 | 2021-10-29 00:00:00 | 24 | 2021-08-11 00:00:00.123456789 | 2021-10-11 00:00:00.123456789 | -2 | | 2021-11-21 | 2021-10-29 | 23 | 2021-11-21 00:09:00 | 2021-10-29 00:00:00 | 23 | 2021-09-11 00:00:00.123456789 | 2021-10-11 00:00:00.123456789 | -1 | | 2021-11-20 | 2021-10-29 | 22 | 2021-11-20 00:10:00 | 2021-10-29 00:00:00 | 22 | 2021-10-11 00:00:00.123456789 | 2021-10-11 00:00:00.123456789 | 0 | +------------+------------+----------------------+---------------------+---------------------+------------------------------+-------------------------------+-------------------------------+--------------------------------+
DATEPART
Sintaksis
BIGINT DATEPART(DATE|DATETIME|TIMESTAMP <date>, STRING <datepart>)Deskripsi
Mengembalikan komponen tertentu dari nilai tanggal berdasarkan unit waktu yang ditentukan oleh datepart.
Parameter
Parameter
Diperlukan
Deskripsi
date
Ya
Nilai bertipe DATE, DATETIME, atau TIMESTAMP. Jika nilai input bertipe STRING dan edisi tipe data MaxCompute V1.0 digunakan dalam proyek Anda, nilai input secara implisit dikonversi ke tipe DATETIME sebelum perhitungan dilakukan.
datepart
Ya
Konstanta bertipe STRING. Parameter ini mendukung EDTF.
Nilai parameter ini ditentukan sesuai dengan aturan konversi antara tipe STRING dan DATETIME. Nilai
yyyymenunjukkan komponen tahun dari nilai tanggal. Nilaimmmenunjukkan komponen bulan dari nilai tanggal. Nilaiddmenunjukkan komponen hari dari nilai tanggal. Untuk informasi lebih lanjut tentang aturan konversi tipe, lihat Konversi Tipe. EDTF juga didukung, seperti-year,-month,-mon,-day, atau-hour.Nilai Pengembalian
Nilai bertipe BIGINT dikembalikan. Nilai pengembalian bervariasi berdasarkan aturan berikut:
Jika nilai date bukan bertipe DATE, DATETIME, atau TIMESTAMP, kesalahan akan dikembalikan.
Jika nilai date adalah null, kesalahan akan dikembalikan.
Jika nilai datepart adalah null, maka null akan dikembalikan.
Contoh
Contoh data statis
-- Nilai pengembalian adalah 2013. SELECT DATEPART(DATETIME '2013-06-08 01:10:00', 'yyyy'); -- Nilai pengembalian adalah 6. SELECT DATEPART(DATETIME '2013-06-08 01:10:00', 'mm'); -- Nilai pengembalian adalah 2013. SELECT DATEPART(DATE '2013-06-08', 'yyyy'); -- Aktifkan edisi tipe data MaxCompute V2.0. Kirimkan pernyataan SET berikut bersama dengan pernyataan SQL. Nilai pengembalian adalah 2013. SET odps.sql.type.system.odps2=true; SELECT DATEPART(TIMESTAMP '2013-06-08 01:10:00', 'yyyy'); -- Nilai pengembalian adalah 2013. SET odps.sql.type.system.odps2=false; SELECT DATEPART('2013-06-08 01:10:00', 'yyyy'); -- Nilai pengembalian adalah NULL. SELECT DATEPART(DATE '2013-06-08', null);Contoh data tabel
Ekstrak nilai tanggal dari kolom date1, datetime1, dan timestamp1 berdasarkan unit waktu yang ditentukan oleh datepart. Data dalam Data Contoh digunakan dalam contoh ini. Pernyataan contoh:
-- Aktifkan edisi tipe data MaxCompute V2.0. Kirimkan pernyataan SET berikut bersama dengan pernyataan SQL. SET odps.sql.type.system.odps2=true; SELECT date1, DATEPART(date1,'yyyy') AS date1_datepart, datetime1, DATEPART(datetime1,'dd') AS datetime1_datepart, timestamp1, datepart(timestamp1,'mm') AS timestamp1_datepart FROM mf_date_fun_t;Hasil berikut dikembalikan.
+------------+----------------+---------------------+-------------------------+-------------------------------+---------------------+ | date1 | date1_datepart | datetime1 | datetime1_datepart | timestamp1 | timestamp1_datepart | +------------+----------------+---------------------+-------------------------+-------------------------------+---------------------+ | 2021-11-29 | 2021 | 2021-11-29 00:01:00 | 29 | 2021-01-11 00:00:00.123456789 | 1 | | 2021-11-28 | 2021 | 2021-11-28 00:02:00 | 28 | 2021-02-11 00:00:00.123456789 | 2 | | 2021-11-27 | 2021 | 2021-11-27 00:03:00 | 27 | 2021-03-11 00:00:00.123456789 | 3 | | 2021-11-26 | 2021 | 2021-11-26 00:04:00 | 26 | 2021-04-11 00:00:00.123456789 | 4 | | 2021-11-25 | 2021 | 2021-11-25 00:05:00 | 25 | 2021-05-11 00:00:00.123456789 | 5 | | 2021-11-24 | 2021 | 2021-11-24 00:06:00 | 24 | 2021-06-11 00:00:00.123456789 | 6 | | 2021-11-23 | 2021 | 2021-11-23 00:07:00 | 23 | 2021-07-11 00:00:00.123456789 | 7 | | 2021-11-22 | 2021 | 2021-11-22 00:08:00 | 22 | 2021-08-11 00:00:00.123456789 | 8 | | 2021-11-21 | 2021 | 2021-11-21 00:09:00 | 21 | 2021-09-11 00:00:00.123456789 | 9 | | 2021-11-20 | 2021 | 2021-11-20 00:10:00 | 20 | 2021-10-11 00:00:00.123456789 | 10 | +------------+----------------+---------------------+-------------------------+-------------------------------+---------------------+
DATETRUNC
Sintaksis
DATE|DATETIME DATETRUNC(DATE|DATETIME|TIMESTAMP <date>, STRING <datepart>)Deskripsi
Memotong nilai tanggal berdasarkan unit waktu yang ditentukan oleh datepart.
Parameter
Parameter
Wajib
Deskripsi
date
Ya
Nilai bertipe DATE, DATETIME, atau TIMESTAMP. Jika nilai input bertipe STRING dan edisi tipe data MaxCompute V1.0 digunakan dalam proyek Anda, nilai input akan dikonversi secara implisit menjadi tipe DATETIME sebelum perhitungan.
datepart
Ya
Konstanta bertipe STRING. Parameter ini mendukung EDTF.
Nilai parameter ini ditentukan sesuai dengan aturan konversi antara tipe STRING dan DATETIME. Nilai
yyyymenunjukkan komponen tahun dari nilai tanggal. Nilaimmmenunjukkan komponen bulan dari nilai tanggal. Nilaiddmenunjukkan komponen hari dari nilai tanggal. Untuk informasi lebih lanjut tentang aturan konversi tipe, lihat Konversi Tipe. EDTF juga didukung, seperti-year,-month,-mon,-day, atau-hour.Nilai Pengembalian
Nilai dari tipe DATE atau DATETIME dikembalikan. Nilai kembali berada dalam format
yyyy-mm-ddatauyyyy-mm-dd hh:mi:ss. Nilai kembali bervariasi berdasarkan aturan berikut:Jika nilai date bukan bertipe DATE, DATETIME, atau TIMESTAMP, kesalahan akan dikembalikan.
Jika nilai date adalah null, kesalahan akan dikembalikan.
Jika nilai datepart adalah null, null akan dikembalikan.
Contoh
Contoh data statis
-- Nilai pengembalian adalah 2011-01-01 00:00:00. SELECT DATETRUNC(DATETIME '2011-12-07 16:28:46', 'yyyy'); -- Nilai pengembalian adalah 2011-12-01 00:00:00. SELECT DATETRUNC(DATETIME'2011-12-07 16:28:46', 'month'); -- Nilai pengembalian adalah 2011-12-07 00:00:00. SELECT DATETRUNC(DATETIME'2011-12-07 16:28:46', 'DD'); -- Nilai pengembalian adalah 2011-01-01. SELECT DATETRUNC(DATE '2011-12-07', 'yyyy'); -- Aktifkan edisi tipe data MaxCompute V2.0. Kirim pernyataan SET berikut bersama dengan pernyataan SQL. Nilai pengembalian adalah 2011-01-01 00:00:00.0. SET odps.sql.type.system.odps2=true; SELECT DATETRUNC(TIMESTAMP '2011-12-07 16:28:46', 'yyyy'); -- Nilai pengembalian adalah 2011-01-01 00:00:00.0. SET odps.sql.type.system.odps2=false; SELECT DATETRUNC('2011-12-07 16:28:46', 'yyyy'); -- Nilai pengembalian adalah NULL. SELECT DATETRUNC(DATE '2011-12-07', null);Contoh data tabel
Potong nilai tanggal di kolom date1, datetime1, dan timestamp1 berdasarkan unit waktu yang ditentukan oleh datepart. Data dalam Data Contoh digunakan dalam contoh ini. Pernyataan contoh:
-- Aktifkan edisi tipe data MaxCompute V2.0. Kirim pernyataan SET berikut bersama dengan pernyataan SQL. SET odps.sql.type.system.odps2=true; SELECT date1, DATETRUNC(date1,'yyyy') AS date1_datetrunc, datetime1, DATETRUNC(datetime1,'dd') AS datetime1_datetrunc, timestamp1, DATETRUNC(timestamp1,'mm') AS timestamp1_datetrunc FROM mf_date_fun_t;Hasil berikut dikembalikan.
+------------+-----------------+---------------------+---------------------+-------------------------------+----------------------+ | date1 | date1_datetrunc | datetime1 | datetime1_datetrunc | timestamp1 | timestamp1_datetrunc | +------------+-----------------+---------------------+---------------------+-------------------------------+----------------------+ | 2021-11-29 | 2021-01-01 | 2021-11-29 00:01:00 | 2021-11-29 00:00:00 | 2021-01-11 00:00:00.123456789 | 2021-01-01 00:00:00 | | 2021-11-28 | 2021-01-01 | 2021-11-28 00:02:00 | 2021-11-28 00:00:00 | 2021-02-11 00:00:00.123456789 | 2021-02-01 00:00:00 | | 2021-11-27 | 2021-01-01 | 2021-11-27 00:03:00 | 2021-11-27 00:00:00 | 2021-03-11 00:00:00.123456789 | 2021-03-01 00:00:00 | | 2021-11-26 | 2021-01-01 | 2021-11-26 00:04:00 | 2021-11-26 00:00:00 | 2021-04-11 00:00:00.123456789 | 2021-04-01 00:00:00 | | 2021-11-25 | 2021-01-01 | 2021-11-25 00:05:00 | 2021-11-25 00:00:00 | 2021-05-11 00:00:00.123456789 | 2021-05-01 00:00:00 | | 2021-11-24 | 2021-01-01 | 2021-11-24 00:06:00 | 2021-11-24 00:00:00 | 2021-06-11 00:00:00.123456789 | 2021-06-01 00:00:00 | | 2021-11-23 | 2021-01-01 | 2021-11-23 00:07:00 | 2021-11-23 00:00:00 | 2021-07-11 00:00:00.123456789 | 2021-07-01 00:00:00 | | 2021-11-22 | 2021-01-01 | 2021-11-22 00:08:00 | 2021-11-22 00:00:00 | 2021-08-11 00:00:00.123456789 | 2021-08-01 00:00:00 | | 2021-11-21 | 2021-01-01 | 2021-11-21 00:09:00 | 2021-11-21 00:00:00 | 2021-09-11 00:00:00.123456789 | 2021-09-01 00:00:00 | | 2021-11-20 | 2021-01-01 | 2021-11-20 00:10:00 | 2021-11-20 00:00:00 | 2021-10-11 00:00:00.123456789 | 2021-10-01 00:00:00 | +------------+-----------------+---------------------+---------------------+-------------------------------+----------------------+
HARI
Sintaksis
INT DAY(DATETIME|TIMESTAMP|DATE|STRING <date>)Deskripsi
Mengembalikan hari di mana nilai tanggal jatuh. Fungsi ini merupakan bagian dari MaxCompute V2.0.
Parameter
date: wajib. Nilai tanggal dengan tipe DATETIME, TIMESTAMP, DATE, atau STRING. Nilai input berada dalam format
yyyy-mm-dd,yyyy-mm-dd hh:mi:ss, atauyyyy-mm-dd hh:mi:ss:ff3. Jika nilainya bertipe STRING, nilai tersebut harus mencakup setidaknya bagianyyyy-mm-dddan tidak boleh mengandung string tambahan.Nilai Kembali
Nilai dengan tipe INT dikembalikan. Nilai kembali bervariasi berdasarkan aturan berikut:
Jika nilai dari date bukan bertipe DATETIME, TIMESTAMP, DATE, atau STRING atau formatnya tidak memenuhi persyaratan, null dikembalikan.
Jika nilai dari date adalah null, null dikembalikan.
Contoh
Contoh data statis
-- Nilai 1 dikembalikan. SELECT DAY('2014-09-01'); -- Nilai kembali adalah NULL. SELECT DAY('20140901'); -- Nilai kembali adalah NULL. SELECT DAY(null);Contoh data tabel
Mendapatkan hari di mana setiap nilai tanggal dalam kolom date1, datetime1, timestamp1, dan date3 jatuh. Data dalam Data Sampel digunakan dalam contoh ini. Pernyataan sampel:
-- Aktifkan edisi tipe data MaxCompute V2.0. Kirimkan pernyataan SET berikut bersama dengan pernyataan SQL. SET odps.sql.type.system.odps2=true; SELECT date1, DAY(date1) AS date1_day, datetime1, DAY(datetime1) AS datetime1_day, timestamp1, DAY(timestamp1) AS timestamp1_day, date3, DAY(date3) AS date3_day FROM mf_date_fun_t;Hasil berikut dikembalikan.
+------------+-----------+---------------------+---------------+-------------------------------+----------------+------------+-----------+ | date1 | date1_day | datetime1 | datetime1_day | timestamp1 | timestamp1_day | date3 | date3_day | +------------+-----------+---------------------+---------------+-------------------------------+----------------+------------+-----------+ | 2021-11-29 | 29 | 2021-11-29 00:01:00 | 29 | 2021-01-11 00:00:00.123456789 | 11 | 2021-11-20 | 20 | | 2021-11-28 | 28 | 2021-11-28 00:02:00 | 28 | 2021-02-11 00:00:00.123456789 | 11 | 2021-11-21 | 21 | | 2021-11-27 | 27 | 2021-11-27 00:03:00 | 27 | 2021-03-11 00:00:00.123456789 | 11 | 2021-11-22 | 22 | | 2021-11-26 | 26 | 2021-11-26 00:04:00 | 26 | 2021-04-11 00:00:00.123456789 | 11 | 2021-11-23 | 23 | | 2021-11-25 | 25 | 2021-11-25 00:05:00 | 25 | 2021-05-11 00:00:00.123456789 | 11 | 2021-11-24 | 24 | | 2021-11-24 | 24 | 2021-11-24 00:06:00 | 24 | 2021-06-11 00:00:00.123456789 | 11 | 2021-11-25 | 25 | | 2021-11-23 | 23 | 2021-11-23 00:07:00 | 23 | 2021-07-11 00:00:00.123456789 | 11 | 2021-11-26 | 26 | | 2021-11-22 | 22 | 2021-11-22 00:08:00 | 22 | 2021-08-11 00:00:00.123456789 | 11 | 2021-11-27 | 27 | | 2021-11-21 | 21 | 2021-11-21 00:09:00 | 21 | 2021-09-11 00:00:00.123456789 | 11 | 2021-11-28 | 28 | | 2021-11-20 | 20 | 2021-11-20 00:10:00 | 20 | 2021-10-11 00:00:00.123456789 | 11 | 2021-11-29 | 29 | +------------+-----------+---------------------+---------------+-------------------------------+----------------+------------+-----------+
DAYOFMONTH
Sintaksis
INT DAYOFMONTH(DATETIME|TIMESTAMP|DATE|STRING <date>)Deskripsi
Mengembalikan komponen hari dari nilai tanggal. Fungsi ini merupakan bagian dari MaxCompute V2.0.
Parameter
date: wajib. Nilai tanggal dengan tipe DATETIME, TIMESTAMP, DATE, atau STRING. Nilai input berada dalam format
yyyy-mm-dd,yyyy-mm-dd hh:mi:ss, atauyyyy-mm-dd hh:mi:ss:ff3. Jika nilainya bertipe STRING, nilai tersebut harus mencakup setidaknya bagianyyyy-mm-dddan tidak boleh mengandung string tambahan.Nilai Kembali
Nilai dengan tipe INT dikembalikan. Nilai kembali bervariasi berdasarkan aturan berikut:
Jika nilai date bukan bertipe DATETIME, TIMESTAMP, DATE, atau STRING atau formatnya tidak memenuhi persyaratan, null dikembalikan.
Jika nilai date adalah null, null dikembalikan.
Contoh
Contoh data statis
-- Nilai 1 dikembalikan. SELECT DAYOFMONTH('2014-09-01'); -- Nilai kembali adalah NULL. SELECT DAYOFMONTH('20140901'); -- Nilai kembali adalah NULL. SELECT DAYOFMONTH(null);Contoh data tabel
Mendapatkan komponen hari dari nilai tanggal di kolom date1, datetime1, timestamp1, dan date3. Data dalam Data Contoh digunakan dalam contoh ini. Pernyataan contoh:
-- Aktifkan edisi tipe data MaxCompute V2.0. Kirim pernyataan SET berikut bersama dengan pernyataan SQL. SET odps.sql.type.system.odps2=true; SELECT date1, DAYOFMONTH(date1) AS date1_dayofmonth, datetime1, DAYOFMONTH(datetime1) AS datetime1_dayofmonth, timestamp1, DAYOFMONTH(timestamp1) AS timestamp1_dayofmonth, date3, DAYOFMONTH(date3) AS date3_dayofmonth FROM mf_date_fun_t;Hasil berikut dikembalikan.
+------------+------------------+---------------------+----------------------+-------------------------------+-----------------------+------------+------------------+ | date1 | date1_dayofmonth | datetime1 | datetime1_dayofmonth | timestamp1 | timestamp1_dayofmonth | date3 | date3_dayofmonth | +------------+------------------+---------------------+----------------------+-------------------------------+-----------------------+------------+------------------+ | 2021-11-29 | 29 | 2021-11-29 00:01:00 | 29 | 2021-01-11 00:00:00.123456789 | 11 | 2021-11-20 | 20 | | 2021-11-28 | 28 | 2021-11-28 00:02:00 | 28 | 2021-02-11 00:00:00.123456789 | 11 | 2021-11-21 | 21 | | 2021-11-27 | 27 | 2021-11-27 00:03:00 | 27 | 2021-03-11 00:00:00.123456789 | 11 | 2021-11-22 | 22 | | 2021-11-26 | 26 | 2021-11-26 00:04:00 | 26 | 2021-04-11 00:00:00.123456789 | 11 | 2021-11-23 | 23 | | 2021-11-25 | 25 | 2021-11-25 00:05:00 | 25 | 2021-05-11 00:00:00.123456789 | 11 | 2021-11-24 | 24 | | 2021-11-24 | 24 | 2021-11-24 00:06:00 | 24 | 2021-06-11 00:00:00.123456789 | 11 | 2021-11-25 | 25 | | 2021-11-23 | 23 | 2021-11-23 00:07:00 | 23 | 2021-07-11 00:00:00.123456789 | 11 | 2021-11-26 | 26 | | 2021-11-22 | 22 | 2021-11-22 00:08:00 | 22 | 2021-08-11 00:00:00.123456789 | 11 | 2021-11-27 | 27 | | 2021-11-21 | 21 | 2021-11-21 00:09:00 | 21 | 2021-09-11 00:00:00.123456789 | 11 | 2021-11-28 | 28 | | 2021-11-20 | 20 | 2021-11-20 00:10:00 | 20 | 2021-10-11 00:00:00.123456789 | 11 | 2021-11-29 | 29 | +------------+------------------+---------------------+----------------------+-------------------------------+-----------------------+------------+------------------+
DAYOFWEEK
Sintaksis
INT DAYOFWEEK(DATETIME|TIMESTAMP|DATE|STRING <date>)Deskripsi
Mengembalikan hari dalam seminggu di mana nilai tanggal jatuh. Fungsi ini merupakan bagian dari MaxCompute V2.0.
Parameter
date: wajib. Nilai tanggal dengan tipe DATETIME, TIMESTAMP, DATE, atau STRING. Nilai input berada dalam format
yyyy-mm-dd,yyyy-mm-dd hh:mi:ss, atauyyyy-mm-dd hh:mi:ss:ff3. Jika nilainya bertipe STRING, nilai tersebut harus mencakup setidaknya bagianyyyy-mm-dddan tidak boleh berisi string tambahan.Nilai Kembali
Nilai dengan tipe INT dikembalikan. Nilai kembali bervariasi berdasarkan aturan berikut:
Jika nilai dari date bukan bertipe DATETIME, TIMESTAMP, DATE, atau STRING atau formatnya tidak memenuhi persyaratan, null dikembalikan.
Jika nilai dari date adalah null, null dikembalikan.
Nilai kembali berkisar antara 1 hingga 7. Nilai 1 menunjukkan Minggu, nilai 2 menunjukkan Senin, dan seterusnya.
Contoh
-- Nilai kembali adalah 5. Nilai kembali menunjukkan Kamis. SELECT DAYOFWEEK('2009-07-30');
DAYOFYEAR
Sintaksis
INT DAYOFYEAR(DATETIME|TIMESTAMP|DATE|STRING <date>)Deskripsi
Mengembalikan bilangan bulat yang mewakili urutan hari dalam setahun. Fungsi ini merupakan bagian dari MaxCompute V2.0.
Parameter
date: wajib. Nilai tanggal dengan tipe DATETIME, TIMESTAMP, DATE, atau STRING. Nilai input berada dalam format
yyyy-mm-dd,yyyy-mm-dd hh:mi:ss, atauyyyy-mm-dd hh:mi:ss:ff3. Jika nilainya bertipe STRING, nilai tersebut harus mencakup setidaknya bagianyyyy-mm-dddan tidak boleh mengandung string tambahan.Nilai Pengembalian
Nilai dengan tipe INT dikembalikan. Nilai pengembalian bervariasi berdasarkan aturan berikut:
Jika nilai dari date bukan bertipe DATETIME, TIMESTAMP, DATE, atau STRING atau formatnya tidak memenuhi persyaratan, null dikembalikan.
Jika nilai dari date adalah null, null dikembalikan.
Contoh
-- Nilai pengembalian adalah 100. SELECT DAYOFYEAR('2016-04-09');
EXTRACT
Sintaks
INT EXTRACT(<datepart> FROM DATE|DATETIME|TIMESTAMP <date>)Deskripsi
Mengekstrak komponen tanggal yang ditentukan oleh datepart dari nilai tanggal yang ditentukan oleh date. Fungsi ini merupakan bagian dari MaxCompute V2.0.
Parameter
Parameter
Diperlukan
Deskripsi
datepart
Ya
Nilainya bisa berupa YEAR, MONTH, DAY, HOUR, MINUTE, atau SECOND.
date
Ya
Nilai tanggal bertipe DATE, DATETIME, TIMESTAMP, atau STRING. Nilai input dalam format
yyyy-mm-dd,yyyy-mm-dd hh:mi:ss, atauyyyy-mm-dd hh:mi:ss.ff3. Jika nilainya bertipe STRING, nilai tersebut harus mencakup setidaknya bagianyyyy-mm-dddan tidak boleh mengandung string tambahan.Nilai Kembali
Nilai bertipe INT dikembalikan. Nilai kembali bervariasi berdasarkan aturan berikut:
Jika nilai dari datepart bukan YEAR, MONTH, DAY, HOUR, MINUTE, atau SECOND, kesalahan akan dikembalikan.
Jika nilai dari datepart adalah null, kesalahan akan dikembalikan.
Jika nilai dari date bukan bertipe DATE, DATETIME, TIMESTAMP, atau STRING atau bernilai null, null akan dikembalikan.
Contoh
Contoh data statis
-- Aktifkan edisi tipe data MaxCompute V2.0. Kirim pernyataan SET berikut bersama dengan pernyataan SQL. SET odps.sql.type.system.odps2=true; SELECT EXTRACT(YEAR FROM '2019-05-01 11:21:00') YEAR, EXTRACT(MONTH FROM '2019-05-01 11:21:00') MONTH, EXTRACT(DAY FROM '2019-05-01 11:21:00') DAY, EXTRACT(HOUR FROM '2019-05-01 11:21:00') HOUR, EXTRACT(MINUTE FROM '2019-05-01 11:21:00') MINUTE; -- Hasil berikut dikembalikan: +------+-------+------+------+--------+ | year | month | day | hour | minute | +------+-------+------+------+--------+ | 2019 | 5 | 1 | 11 | 21 | +------+-------+------+------+--------+ -- Nilai kembali adalah NULL. SELECT EXTRACT(YEAR FROM null);Contoh data tabel
Mengekstrak komponen tanggal yang ditentukan dari nilai tanggal di kolom timestamp1. Data dalam Data Contoh digunakan dalam contoh ini. Pernyataan contoh:
-- Aktifkan edisi tipe data MaxCompute V2.0. Kirim pernyataan SET berikut bersama dengan pernyataan SQL. SET odps.sql.type.system.odps2=true; SELECT timestamp1, EXTRACT(YEAR FROM timestamp1) YEAR, timestamp2, EXTRACT(MONTH from timestamp2) MONTH FROM mf_date_fun_t;Hasil berikut dikembalikan.
+-------------------------------+------+-------------------------------+-------+ | timestamp1 | year | timestamp2 | month | +-------------------------------+------+-------------------------------+-------+ | 2021-01-11 00:00:00.123456789 | 2021 | 2021-10-11 00:00:00.123456789 | 10 | | 2021-02-11 00:00:00.123456789 | 2021 | 2021-10-11 00:00:00.123456789 | 10 | | 2021-03-11 00:00:00.123456789 | 2021 | 2021-10-11 00:00:00.123456789 | 10 | | 2021-04-11 00:00:00.123456789 | 2021 | 2021-10-11 00:00:00.123456789 | 10 | | 2021-05-11 00:00:00.123456789 | 2021 | 2021-10-11 00:00:00.123456789 | 10 | | 2021-06-11 00:00:00.123456789 | 2021 | 2021-10-11 00:00:00.123456789 | 10 | | 2021-07-11 00:00:00.123456789 | 2021 | 2021-10-11 00:00:00.123456789 | 10 | | 2021-08-11 00:00:00.123456789 | 2021 | 2021-10-11 00:00:00.123456789 | 10 | | 2021-09-11 00:00:00.123456789 | 2021 | 2021-10-11 00:00:00.123456789 | 10 | | 2021-10-11 00:00:00.123456789 | 2021 | 2021-10-11 00:00:00.123456789 | 10 | +-------------------------------+------+-------------------------------+-------+
FROM_UNIXTIME
Sintaksis
DATETIME FROM_UNIXTIME(BIGINT <unixtime>)Deskripsi
Mengonversi unixtime tipe BIGINT menjadi nilai tanggal tipe DATETIME.
Parameter
unixtime: wajib. Nilai tanggal tipe BIGINT dalam format UNIX. Nilai parameter ini akurat hingga detik. Nilai valid: [-62167305600, 253402387200].
CatatanJika nilai input adalah tipe STRING, DOUBLE, atau DECIMAL dan edisi tipe data MaxCompute V1.0 digunakan dalam Proyek Anda, nilai input secara implisit dikonversi ke tipe BIGINT sebelum perhitungan.
Nilai Kembali
Nilai tipe DATETIME dikembalikan. Nilai kembali berada dalam format
yyyy-mm-dd hh:mi:ss. Jika nilai dari unixtime adalah null, maka null akan dikembalikan.CatatanAnda dapat menjalankan perintah
set odps.sql.hive.compatible=true;untuk mengaktifkan edisi tipe data yang kompatibel dengan Hive. Dalam edisi tipe data yang kompatibel dengan Hive, perhatikan aturan berikut:Jika nilai input adalah tipe STRING, nilai tanggal tipe STRING akan dikembalikan.
Anda dapat menentukan parameter input kedua untuk menentukan format nilai kembali. Sebagai contoh, Anda dapat menentukan format tanggal dan waktu untuk nilai kembali di parameter input kedua menjadi yyyy-MM-dd atau YYYY-MM-dd. yyyy mewakili tahun kalender dan YYYY mewakili tahun dalam minggu. Tahun dalam minggu mungkin tidak sesuai dengan tahun sebenarnya. Berhati-hatilah saat menggunakan format tahun dalam minggu.
Contoh
Contoh data statis
-- Nilai kembali adalah 1973-11-30 05:33:09. SELECT FROM_UNIXTIME(123456789); -- Nilai kembali adalah 1973-11-30 05:33:09. SET odps.sql.type.system.odps2=false; SELECT FROM_UNIXTIME('123456789'); -- Nilai kembali adalah NULL. SELECT FROM_UNIXTIME(null);Contoh data tabel
Konversikan nilai di kolom date4 menjadi nilai tanggal. Data dalam Data Sampel digunakan dalam contoh ini. Pernyataan sampel:
SELECT date4, FROM_UNIXTIME(date4) AS date4_from_unixtime FROM mf_date_fun_t;Hasil berikut dikembalikan.
+------------+---------------------+ | date4 | date4_from_unixtime | +------------+---------------------+ | 123456780 | 1973-11-30 05:33:00 | | 123456781 | 1973-11-30 05:33:01 | | 123456782 | 1973-11-30 05:33:02 | | 123456783 | 1973-11-30 05:33:03 | | 123456784 | 1973-11-30 05:33:04 | | 123456785 | 1973-11-30 05:33:05 | | 123456786 | 1973-11-30 05:33:06 | | 123456787 | 1973-11-30 05:33:07 | | 123456788 | 1973-11-30 05:33:08 | | 123456789 | 1973-11-30 05:33:09 | +------------+---------------------+
FROM_UTC_TIMESTAMP
Sintaks
TIMESTAMP FROM_UTC_TIMESTAMP({any primitive type}*, STRING <timezone>)Deskripsi
Mengembalikan timestamp yang dikonversi dari Waktu Universal Terkoordinasi (UTC) ke zona waktu tertentu. Fungsi ini merupakan bagian dari MaxCompute V2.0.
PentingNilai kembali dari fungsi FROM_UTC_TIMESTAMP juga dipengaruhi oleh nilai
odps.sql.timezoneyang Anda konfigurasikan untuk proyek Anda. Jika Anda mengonfigurasiodps.sql.timezone=Asia/Shanghai, zona waktu UTC+8 digunakan, yang 8 jam lebih cepat dari UTC. Dalam hal ini, 8 jam ditambahkan ke hasil perhitungan fungsi FROM_UTC_TIMESTAMP. Sebagai contoh, fungsiFROM_UTC_TIMESTAMP(0, 'Asia/Shanghai')mengonversi timestamp dengan UTC+0 menjadi timestamp dengan waktu Beijing (UTC+08:00), dan hasil perhitungannya adalah0 + 8 x 3600 = 28800. Konfigurasiodps.sql.timezone=Asia/Shanghaimemerlukan offset tambahan 8 jam. Akibatnya, nilai kembali adalah1970-01-01 16:00:00.Parameter
Parameter
Diperlukan
Deskripsi
{any primitive type}*
Ya
Timestamp bertipe TIMESTAMP, DATETIME, TINYINT, SMALLINT, INT, atau BIGINT. Jika nilainya bertipe TINYINT, SMALLINT, INT, atau BIGINT, satuan waktunya akurat hingga milidetik.
timezone
Ya
Zona waktu baru.
CatatanAnda dapat mencari daftar zona waktu menggunakan mesin pencari.
Nilai Pengembalian
Nilai bertipe TIMESTAMP dikembalikan. Nilai kembali berada dalam format
yyyy-mm-dd hh:mi:ss.ff3. Nilai kembali bervariasi berdasarkan aturan berikut:Jika nilai dari {any primitive type}* bukan bertipe TIMESTAMP, DATETIME, TINYINT, SMALLINT, INT, atau BIGINT, kesalahan akan dikembalikan.
Jika nilai dari {any primitive type}* adalah null, kesalahan akan dikembalikan.
Jika nilai dari timezone adalah null, null akan dikembalikan.
Contoh
Contoh data statis
-- Satuan waktu dari nilai input akurat hingga milidetik dan nilai pengembalian adalah 2017-08-01 04:24:00.0. SELECT FROM_UTC_TIMESTAMP(1501557840000, 'PST'); -- Nilai pengembalian adalah 1970-01-30 08:00:00.0. SELECT FROM_UTC_TIMESTAMP('1970-01-30 16:00:00','PST'); -- Nilai pengembalian adalah 1970-01-29 16:00:00.0. SELECT FROM_UTC_TIMESTAMP('1970-01-30','PST'); -- Aktifkan edisi tipe data MaxCompute V2.0. Kirimkan pernyataan SET berikut bersama dengan pernyataan SQL. Nilai pengembalian adalah 2011-12-25 17:00:00:00.123. SET odps.sql.type.system.odps2=true; SELECT FROM_UTC_TIMESTAMP(timestamp '2011-12-25 09:00:00.123456', 'Asia/Shanghai'); -- Aktifkan edisi tipe data MaxCompute V2.0. Kirimkan pernyataan SET berikut bersama dengan pernyataan SQL. Nilai pengembalian adalah 2011-12-25 01:55:00.0. SET odps.sql.type.system.odps2=true; SELECT FROM_UTC_TIMESTAMP(timestamp '2011-12-25 06:55:00', 'America/Toronto'); -- Nilai pengembalian adalah NULL. SELECT FROM_UTC_TIMESTAMP('1970-01-30',null);Contoh data tabel
Konversikan nilai tanggal di kolom datetime1 dan timestamp1 menjadi timestamp dalam zona waktu tertentu. Data dalam Data Sampel digunakan dalam contoh ini. Pernyataan sampel:
-- Aktifkan edisi tipe data MaxCompute V2.0. Kirimkan pernyataan SET berikut bersama dengan pernyataan SQL. SET odps.sql.type.system.odps2=true; SELECT datetime1, FROM_UTC_TIMESTAMP(datetime1,'PST') pst, timestamp1, FROM_UTC_TIMESTAMP(timestamp1,'Asia/Shanghai') asia FROM mf_date_fun_t;Hasil berikut dikembalikan.
+---------------------+---------------------+-------------------------------+-------------------------------+ | datetime1 | pst | timestamp1 | asia | +---------------------+---------------------+-------------------------------+-------------------------------+ | 2021-11-29 00:01:00 | 2021-11-28 16:01:00 | 2021-01-11 00:00:00.123456789 | 2021-01-11 08:00:00.123456789 | | 2021-11-28 00:02:00 | 2021-11-27 16:02:00 | 2021-02-11 00:00:00.123456789 | 2021-02-11 08:00:00.123456789 | | 2021-11-27 00:03:00 | 2021-11-26 16:03:00 | 2021-03-11 00:00:00.123456789 | 2021-03-11 08:00:00.123456789 | | 2021-11-26 00:04:00 | 2021-11-25 16:04:00 | 2021-04-11 00:00:00.123456789 | 2021-04-11 08:00:00.123456789 | | 2021-11-25 00:05:00 | 2021-11-24 16:05:00 | 2021-05-11 00:00:00.123456789 | 2021-05-11 08:00:00.123456789 | | 2021-11-24 00:06:00 | 2021-11-23 16:06:00 | 2021-06-11 00:00:00.123456789 | 2021-06-11 08:00:00.123456789 | | 2021-11-23 00:07:00 | 2021-11-22 16:07:00 | 2021-07-11 00:00:00.123456789 | 2021-07-11 08:00:00.123456789 | | 2021-11-22 00:08:00 | 2021-11-21 16:08:00 | 2021-08-11 00:00:00.123456789 | 2021-08-11 08:00:00.123456789 | | 2021-11-21 00:09:00 | 2021-11-20 16:09:00 | 2021-09-11 00:00:00.123456789 | 2021-09-11 08:00:00.123456789 | | 2021-11-20 00:10:00 | 2021-11-19 16:10:00 | 2021-10-11 00:00:00.123456789 | 2021-10-11 08:00:00.123456789 | +---------------------+---------------------+-------------------------------+-------------------------------+
GETDATE
Sintaksis
DATETIME GETDATE()Deskripsi
Mengembalikan waktu sistem saat ini sebagai nilai tanggal. MaxCompute menggunakan UTC+8 sebagai zona waktu standar.
Nilai Pengembalian
Tanggal dan waktu saat ini dikembalikan, yang bertipe DATETIME.
CatatanDalam MaxCompute SQL,
GETDATEselalu mengembalikan nilai tetap. Nilai kembali adalah waktu arbitrer selama eksekusi tugas SQL MaxCompute. Waktu tersebut akurat hingga detik. Jika Anda mengaktifkan edisi tipe data MaxCompute V2.0, waktu tersebut akurat hingga milidetik.
JAM
Sintaksis
INT HOUR(DATETIME|TIMESTAMP|STRING <tanggal>)Deskripsi
Mengembalikan komponen jam dari nilai tanggal.
Parameter
date: wajib. Nilai tanggal dengan tipe DATETIME, TIMESTAMP, atau STRING. Nilai tanggal berada dalam format
yyyy-mm-dd hh:mi:ssatauyyyy-mm-dd hh:mi:ss.ff3. Jika nilainya bertipe STRING, nilai tersebut harus mencakup setidaknya bagianyyyy-mm-dddan tidak boleh mengandung string tambahan. Fungsi ini merupakan fungsi tambahan dari MaxCompute V2.0.Nilai Kembali
Nilai dengan tipe INT dikembalikan. Nilai kembali bervariasi berdasarkan aturan berikut:
Jika nilai dari tanggal bukan bertipe DATETIME, TIMESTAMP, atau STRING atau formatnya tidak memenuhi persyaratan, null dikembalikan.
Jika nilai dari tanggal adalah null, null dikembalikan.
Contoh
Contoh data statis
-- Nilai kembali adalah 12. SELECT HOUR('2014-09-01 12:00:00'); -- Nilai kembali adalah 12. SELECT HOUR('12:00:00'); -- Nilai kembali adalah NULL. SELECT HOUR('20140901120000'); -- Nilai kembali adalah NULL. SELECT HOUR(null);Contoh data tabel
Mendapatkan komponen jam dari nilai tanggal di kolom datetime1 dan timestamp1. Data dalam Data Sampel digunakan dalam contoh ini. Pernyataan sampel:
-- Aktifkan edisi tipe data MaxCompute V2.0. Kirim pernyataan SET berikut bersama dengan pernyataan SQL. SET odps.sql.type.system.odps2=true; SELECT datetime1, HOUR(datetime1) AS datetime1_hour, timestamp1, HOUR(timestamp1) AS timestamp1_hour FROM mf_date_fun_t;Hasil berikut dikembalikan.
+---------------------+----------------+-------------------------------+-----------------+ | datetime1 | datetime1_hour | timestamp1 | timestamp1_hour | +---------------------+----------------+-------------------------------+-----------------+ | 2021-11-29 00:01:00 | 0 | 2021-01-11 00:00:00.123456789 | 0 | | 2021-11-28 00:02:00 | 0 | 2021-02-11 00:00:00.123456789 | 0 | | 2021-11-27 00:03:00 | 0 | 2021-03-11 00:00:00.123456789 | 0 | | 2021-11-26 00:04:00 | 0 | 2021-04-11 00:00:00.123456789 | 0 | | 2021-11-25 00:05:00 | 0 | 2021-05-11 00:00:00.123456789 | 0 | | 2021-11-24 00:06:00 | 0 | 2021-06-11 00:00:00.123456789 | 0 | | 2021-11-23 00:07:00 | 0 | 2021-07-11 00:00:00.123456789 | 0 | | 2021-11-22 00:08:00 | 0 | 2021-08-11 00:00:00.123456789 | 0 | | 2021-11-21 00:09:00 | 0 | 2021-09-11 00:00:00.123456789 | 0 | | 2021-11-20 00:10:00 | 0 | 2021-10-11 00:00:00.123456789 | 0 | +---------------------+----------------+-------------------------------+-----------------+
ISDATE
Sintaksis
BOOLEAN ISDATE(STRING <date>, STRING <format>)Deskripsi
Menentukan apakah string tanggal dapat dikonversi menjadi nilai tanggal dalam format tertentu. Jika string tanggal dapat dikonversi menjadi nilai tanggal dalam format yang ditentukan, nilai true akan dikembalikan. Sebaliknya, nilai false akan dikembalikan.
Parameter
Parameter
Diperlukan
Deskripsi
date
Ya
Nilai bertipe STRING. Jika nilai input bertipe BIGINT, DOUBLE, DECIMAL, atau DATETIME, nilai tersebut secara implisit dikonversi ke nilai bertipe STRING sebelum perhitungan.
format
Ya
Konstanta bertipe STRING. Parameter ini tidak mendukung EDTF. Jika terdapat string format redundan di format, fungsi ini mengonversi string tanggal yang sesuai dengan string format pertama menjadi nilai tanggal. Sisa string dianggap sebagai pemisah. Contohnya,
isdate("1234-yyyy", "yyyy-yyyy")mengembalikan nilai true.Nilai Kembali
Nilai bertipe BOOLEAN dikembalikan. Jika nilai dari date atau format adalah null, maka null akan dikembalikan.
Contoh
Contoh data statis
-- Nilai kembali adalah true. SELECT ISDATE('2021-10-11','yyyy-mm-dd'); -- Nilai kembali adalah false. SET odps.sql.type.system.odps2=false; SELECT ISDATE(1678952314,'yyyy-mm-dd');Contoh data tabel
Tentukan apakah string tanggal di kolom date3 dapat dikonversi menjadi nilai tanggal dalam format tertentu. Data dalam Data Contoh digunakan dalam contoh ini. Pernyataan contoh:
SELECT date3, ISDATE(date3,'yyyy-mm-dd') AS date3_isdate FROM mf_date_fun_t;Hasil berikut dikembalikan.
+------------+--------------+ | date3 | date3_isdate | +------------+--------------+ | 2021-11-20 | true | | 2021-11-21 | true | | 2021-11-22 | true | | 2021-11-23 | true | | 2021-11-24 | true | | 2021-11-25 | true | | 2021-11-26 | true | | 2021-11-27 | true | | 2021-11-28 | true | | 2021-11-29 | true | +------------+--------------+
LAST_DAY
Sintaksis
STRING LAST_DAY(DATE|DATETIME|TIMESTAMP|STRING <date>)Deskripsi
Mengembalikan hari terakhir dari bulan di mana nilai tanggal berada. Fungsi ini merupakan bagian dari MaxCompute V2.0.
Parameter
date: wajib. Nilai tanggal dengan tipe DATE, DATETIME, TIMESTAMP, atau STRING. Jika nilainya bertipe STRING, nilai tersebut harus mencakup setidaknya bagian
yyyy-mm-dddan tidak boleh mengandung string tambahan.Nilai Kembali
Nilai dengan tipe STRING dikembalikan. Nilai kembali berada dalam format
yyyy-mm-dd. Nilai kembali bervariasi berdasarkan aturan berikut:Jika nilai date bukan bertipe DATE, DATETIME, TIMESTAMP, atau STRING atau formatnya tidak memenuhi persyaratan, null dikembalikan.
Jika nilai date adalah null, kesalahan akan dikembalikan.
Contoh
Contoh data statis
-- Nilai kembali adalah 2017-03-31. SELECT LAST_DAY('2017-03-04'); -- Nilai kembali adalah 2017-07-31. SELECT LAST_DAY('2017-07-04 11:40:00'); -- Nilai kembali adalah NULL. SELECT LAST_DAY('20170304');Contoh data tabel
Mendapatkan hari terakhir dari bulan di mana setiap nilai tanggal dalam kolom date1, datetime1, timestamp1, dan date3 berada. Data dalam Data Sampel digunakan dalam contoh ini. Pernyataan sampel:
-- Aktifkan edisi tipe data MaxCompute V2.0. Kirimkan pernyataan SET berikut bersama dengan pernyataan SQL. SET odps.sql.type.system.odps2=true; SELECT date1, LAST_DAY(date1) AS date1_lastday, datetime1, LAST_DAY(datetime1) AS datetime1_lastday, timestamp1, LAST_DAY(timestamp1) AS timestamp1_lastday, date3, LAST_DAY(date3) AS date3_lastday FROM mf_date_fun_t;Hasil berikut dikembalikan.
+------------+---------------+---------------------+-------------------+-------------------------------+--------------------+------------+---------------+ | date1 | date1_lastday | datetime1 | datetime1_lastday | timestamp1 | timestamp1_lastday | date3 | date3_lastday | +------------+---------------+---------------------+-------------------+-------------------------------+--------------------+------------+---------------+ | 2021-11-29 | 2021-11-30 | 2021-11-29 00:01:00 | 2021-11-30 | 2021-01-11 00:00:00.123456789 | 2021-01-31 | 2021-11-20 | 2021-11-30 | | 2021-11-28 | 2021-11-30 | 2021-11-28 00:02:00 | 2021-11-30 | 2021-02-11 00:00:00.123456789 | 2021-02-28 | 2021-11-21 | 2021-11-30 | | 2021-11-27 | 2021-11-30 | 2021-11-27 00:03:00 | 2021-11-30 | 2021-03-11 00:00:00.123456789 | 2021-03-31 | 2021-11-22 | 2021-11-30 | | 2021-11-26 | 2021-11-30 | 2021-11-26 00:04:00 | 2021-11-30 | 2021-04-11 00:00:00.123456789 | 2021-04-30 | 2021-11-23 | 2021-11-30 | | 2021-11-25 | 2021-11-30 | 2021-11-25 00:05:00 | 2021-11-30 | 2021-05-11 00:00:00.123456789 | 2021-05-31 | 2021-11-24 | 2021-11-30 | | 2021-11-24 | 2021-11-30 | 2021-11-24 00:06:00 | 2021-11-30 | 2021-06-11 00:00:00.123456789 | 2021-06-30 | 2021-11-25 | 2021-11-30 | | 2021-11-23 | 2021-11-30 | 2021-11-23 00:07:00 | 2021-11-30 | 2021-07-11 00:00:00.123456789 | 2021-07-31 | 2021-11-26 | 2021-11-30 | | 2021-11-22 | 2021-11-30 | 2021-11-22 00:08:00 | 2021-11-30 | 2021-08-11 00:00:00.123456789 | 2021-08-31 | 2021-11-27 | 2021-11-30 | | 2021-11-21 | 2021-11-30 | 2021-11-21 00:09:00 | 2021-11-30 | 2021-09-11 00:00:00.123456789 | 2021-09-30 | 2021-11-28 | 2021-11-30 | | 2021-11-20 | 2021-11-30 | 2021-11-20 00:10:00 | 2021-11-30 | 2021-10-11 00:00:00.123456789 | 2021-10-31 | 2021-11-29 | 2021-11-30 | +------------+---------------+---------------------+-------------------+-------------------------------+--------------------+------------+---------------+
LASTDAY
Sintaksis
DATETIME LASTDAY(DATETIME <date>)Deskripsi
Mengembalikan hari terakhir dari bulan di mana nilai tanggal berada. Hanya komponen hari yang dipotong. Komponen jam, menit, dan detik dinyatakan sebagai
00:00:00.Parameter
tanggal: nilai tanggal dengan tipe DATETIME. Nilai tanggal berada dalam format
yyyy-mm-dd hh:mi:ss. Jika nilai input adalah tipe STRING dan edisi tipe data MaxCompute V1.0 digunakan dalam proyek Anda, nilai input secara implisit dikonversi ke tipe DATETIME sebelum perhitungan.Nilai Pengembalian
Nilai dengan tipe DATETIME dikembalikan. Nilai kembali berada dalam format
yyyy-mm-dd hh:mi:ss. Nilai kembali bervariasi berdasarkan aturan berikut:Jika nilai tanggal bukan bertipe DATETIME atau STRING atau formatnya tidak memenuhi persyaratan, kesalahan akan dikembalikan.
Jika nilai tanggal adalah null, maka null akan dikembalikan.
Contoh
Contoh data statis
-- Nilai pengembalian adalah 2013-06-30 00:00:00. SELECT LASTDAY (DATETIME '2013-06-08 01:10:00'); -- Nilai pengembalian adalah 2013-06-30 00:00:00. SET odps.sql.type.system.odps2=false; SELECT LASTDAY ('2013-06-08 01:10:00'); -- Nilai pengembalian adalah NULL. SELECT LASTDAY (null);Contoh data tabel
Mendapatkan hari terakhir dari bulan di mana setiap nilai tanggal dalam kolom datetime1 berada. Data dalam Data Contoh digunakan dalam contoh ini. Pernyataan contoh:
SELECT datetime1, LASTDAY(datetime1) AS datetime1_lastday FROM mf_date_fun_t;Hasil berikut dikembalikan.
+---------------------+---------------------+ | datetime1 | datetime1_lastday | +---------------------+---------------------+ | 2021-11-29 00:01:00 | 2021-11-30 00:00:00 | | 2021-11-28 00:02:00 | 2021-11-30 00:00:00 | | 2021-11-27 00:03:00 | 2021-11-30 00:00:00 | | 2021-11-26 00:04:00 | 2021-11-30 00:00:00 | | 2021-11-25 00:05:00 | 2021-11-30 00:00:00 | | 2021-11-24 00:06:00 | 2021-11-30 00:00:00 | | 2021-11-23 00:07:00 | 2021-11-30 00:00:00 | | 2021-11-22 00:08:00 | 2021-11-30 00:00:00 | | 2021-11-21 00:09:00 | 2021-11-30 00:00:00 | | 2021-11-20 00:10:00 | 2021-11-30 00:00:00 | +---------------------+---------------------+
MINUTE
Sintaksis
INT MINUTE(DATETIME|TIMESTAMP|STRING <date>)Deskripsi
Mengembalikan komponen menit dari nilai tanggal. Fungsi ini merupakan bagian dari MaxCompute V2.0.
Parameter
date: wajib. Nilai tanggal dengan tipe DATETIME, TIMESTAMP, atau STRING. Nilai tanggal berada dalam format
yyyy-mm-dd hh:mi:ssatauyyyy-mm-dd hh:mi:ss.ff3.Nilai Pengembalian
Nilai dengan tipe INT dikembalikan. Nilai pengembalian bervariasi berdasarkan aturan berikut:
Jika nilai dari date bukan bertipe DATETIME, TIMESTAMP, atau STRING atau formatnya tidak memenuhi persyaratan, null dikembalikan.
Jika nilai dari date adalah null, null dikembalikan.
Contoh
Contoh data statis
-- Nilai pengembalian adalah 30. SELECT MINUTE('2014-09-01 12:30:00'); -- Nilai pengembalian adalah 30. SELECT MINUTE('12:30:00'); -- Nilai pengembalian adalah NULL. SELECT MINUTE('20140901120000'); -- Nilai pengembalian adalah NULL. SELECT MINUTE(null);Contoh data tabel
Mendapatkan komponen menit dari nilai tanggal di kolom datetime1 dan timestamp1. Data dalam Data Contoh digunakan dalam contoh ini. Pernyataan contoh:
-- Aktifkan edisi tipe data MaxCompute V2.0. Kirim pernyataan SET berikut bersama dengan pernyataan SQL. SET odps.sql.type.system.odps2=true; SELECT datetime1, MINUTE(datetime1) AS datetime1_minute, timestamp1, MINUTE(timestamp1) AS timestamp1_minute FROM mf_date_fun_t;Hasil berikut dikembalikan.
+---------------------+------------------+-------------------------------+-------------------+ | datetime1 | datetime1_minute | timestamp1 | timestamp1_minute | +---------------------+------------------+-------------------------------+-------------------+ | 2021-11-29 00:01:00 | 1 | 2021-01-11 00:00:00.123456789 | 0 | | 2021-11-28 00:02:00 | 2 | 2021-02-11 00:00:00.123456789 | 0 | | 2021-11-27 00:03:00 | 3 | 2021-03-11 00:00:00.123456789 | 0 | | 2021-11-26 00:04:00 | 4 | 2021-04-11 00:00:00.123456789 | 0 | | 2021-11-25 00:05:00 | 5 | 2021-05-11 00:00:00.123456789 | 0 | | 2021-11-24 00:06:00 | 6 | 2021-06-11 00:00:00.123456789 | 0 | | 2021-11-23 00:07:00 | 7 | 2021-07-11 00:00:00.123456789 | 0 | | 2021-11-22 00:08:00 | 8 | 2021-08-11 00:00:00.123456789 | 0 | | 2021-11-21 00:09:00 | 9 | 2021-09-11 00:00:00.123456789 | 0 | | 2021-11-20 00:10:00 | 10 | 2021-10-11 00:00:00.123456789 | 0 | +---------------------+------------------+-------------------------------+-------------------+
BULAN
Sintaksis
INT MONTH(DATETIME|TIMESTAMP|DATE|STRING <date>)Deskripsi
Mengembalikan bulan di mana nilai tanggal jatuh. Fungsi ini merupakan bagian dari MaxCompute V2.0.
Parameter
date: wajib. Nilai tanggal dengan tipe DATETIME, TIMESTAMP, DATE, atau STRING. Nilai input berada dalam format
yyyy-mm-dd,yyyy-mm-dd hh:mi:ss, atauyyyy-mm-dd hh:mi:ss:ff3. Jika nilainya bertipe STRING, nilai tersebut harus mencakup setidaknya bagianyyyy-mm-dddan tidak boleh mengandung string tambahan.Nilai Pengembalian
Nilai dengan tipe INT dikembalikan. Nilai pengembalian bervariasi berdasarkan aturan berikut:
Jika nilai dari date bukan bertipe DATETIME, TIMESTAMP, DATE, atau STRING atau formatnya tidak memenuhi persyaratan, null dikembalikan.
Jika nilai dari date adalah null, null dikembalikan.
Contoh
Contoh data statis
-- Nilai pengembalian adalah 9. SELECT MONTH('2014-09-01'); -- Nilai pengembalian adalah NULL. SELECT MONTH('20140901'); -- Nilai pengembalian adalah NULL. SELECT MONTH(null);Contoh data tabel
Dapatkan komponen bulan dari setiap nilai tanggal di kolom date1, datetime1, timestamp1, dan date3. Data dalam Data Contoh digunakan dalam contoh ini. Pernyataan contoh:
-- Aktifkan edisi tipe data MaxCompute V2.0. Kirim pernyataan SET berikut bersama dengan pernyataan SQL. SET odps.sql.type.system.odps2=true; SELECT date1, MONTH(date1) AS date1_month, datetime1, MONTH(datetime1) AS datetime1_month, timestamp1, MONTH(timestamp1) AS timestamp1_month, date3, MONTH(date3) AS date3_month FROM mf_date_fun_t;Hasil berikut dikembalikan.
+------------+-------------+---------------------+-----------------+-------------------------------+------------------+------------+-------------+ | date1 | date1_month | datetime1 | datetime1_month | timestamp1 | timestamp1_month | date3 | date3_month | +------------+-------------+---------------------+-----------------+-------------------------------+------------------+------------+-------------+ | 2021-11-29 | 11 | 2021-11-29 00:01:00 | 11 | 2021-01-11 00:00:00.123456789 | 1 | 2021-11-20 | 11 | | 2021-11-28 | 11 | 2021-11-28 00:02:00 | 11 | 2021-02-11 00:00:00.123456789 | 2 | 2021-11-21 | 11 | | 2021-11-27 | 11 | 2021-11-27 00:03:00 | 11 | 2021-03-11 00:00:00.123456789 | 3 | 2021-11-22 | 11 | | 2021-11-26 | 11 | 2021-11-26 00:04:00 | 11 | 2021-04-11 00:00:00.123456789 | 4 | 2021-11-23 | 11 | | 2021-11-25 | 11 | 2021-11-25 00:05:00 | 11 | 2021-05-11 00:00:00.123456789 | 5 | 2021-11-24 | 11 | | 2021-11-24 | 11 | 2021-11-24 00:06:00 | 11 | 2021-06-11 00:00:00.123456789 | 6 | 2021-11-25 | 11 | | 2021-11-23 | 11 | 2021-11-23 00:07:00 | 11 | 2021-07-11 00:00:00.123456789 | 7 | 2021-11-26 | 11 | | 2021-11-22 | 11 | 2021-11-22 00:08:00 | 11 | 2021-08-11 00:00:00.123456789 | 8 | 2021-11-27 | 11 | | 2021-11-21 | 11 | 2021-11-21 00:09:00 | 11 | 2021-09-11 00:00:00.123456789 | 9 | 2021-11-28 | 11 | | 2021-11-20 | 11 | 2021-11-20 00:10:00 | 11 | 2021-10-11 00:00:00.123456789 | 10 | 2021-11-29 | 11 | +------------+-------------+---------------------+-----------------+-------------------------------+------------------+------------+-------------+
MONTHS_BETWEEN
Sintaksis
DOUBLE MONTHS_BETWEEN(DATETIME|TIMESTAMP|DATE|STRING <date1>, DATETIME|TIMESTAMP|DATE|STRING <date2>)Deskripsi
Mengembalikan jumlah bulan antara date1 dan date2. Fungsi ini merupakan bagian dari MaxCompute V2.0.
Parameter
date1 dan date2: wajib. Nilai bertipe DATETIME, TIMESTAMP, DATE, atau STRING. Nilai input berada dalam format
yyyy-mm-dd,yyyy-mm-dd hh:mi:ss,yyyy-mm-dd hh:mi:ss.ff3. Jika nilai input bertipe STRING, nilai tersebut harus mencakup setidaknya bagianyyyy-mm-dddan tidak boleh mengandung string tambahan.Nilai Kembali
Nilai bertipe DOUBLE dikembalikan. Nilai kembali bervariasi berdasarkan aturan berikut:
Jika date1 lebih akhir daripada date2, nilai positif dikembalikan. Jika date2 lebih akhir daripada date1, nilai negatif dikembalikan.
Jika date1 dan date2 sesuai dengan hari terakhir dari dua bulan, nilai kembali adalah bilangan bulat yang mewakili jumlah bulan. Sebaliknya, nilai kembali dihitung menggunakan rumus berikut: (date1 - date2)/31.
Jika nilai date1 atau date2 adalah null, null dikembalikan.
Contoh
Contoh data statis
-- Nilai kembali adalah 3.9495967741935485. SELECT MONTHS_BETWEEN('1997-02-28 10:30:00', '1996-10-30'); -- Nilai kembali adalah -3.9495967741935485. SELECT MONTHS_BETWEEN('1996-10-30','1997-02-28 10:30:00' ); -- Nilai kembali adalah -3.0. SELECT MONTHS_BETWEEN('1996-09-30','1996-12-31'); -- Nilai kembali adalah NULL. SELECT MONTHS_BETWEEN('1996-09-30', null);Contoh data tabel
Hitung jumlah bulan antara nilai tanggal pada kolom timestamp1 dan timestamp2. Data dalam Data Sampel digunakan dalam contoh ini. Pernyataan sampel:
-- Aktifkan edisi tipe data MaxCompute V2.0. Kirimkan pernyataan SET berikut bersama dengan pernyataan SQL. SET odps.sql.type.system.odps2=true; SELECT timestamp1, timestamp2, MONTHS_BETWEEN(timestamp1, timestamp2) FROM mf_date_fun_t;Hasil berikut dikembalikan.
+-------------------------------+-------------------------------+------------+ | timestamp1 | timestamp2 | _c2 | +-------------------------------+-------------------------------+------------+ | 2021-01-11 00:00:00.123456789 | 2021-10-11 00:00:00.123456789 | -9.0 | | 2021-02-11 00:00:00.123456789 | 2021-10-11 00:00:00.123456789 | -8.0 | | 2021-03-11 00:00:00.123456789 | 2021-10-11 00:00:00.123456789 | -7.0 | | 2021-04-11 00:00:00.123456789 | 2021-10-11 00:00:00.123456789 | -6.0 | | 2021-05-11 00:00:00.123456789 | 2021-10-11 00:00:00.123456789 | -5.0 | | 2021-06-11 00:00:00.123456789 | 2021-10-11 00:00:00.123456789 | -4.0 | | 2021-07-11 00:00:00.123456789 | 2021-10-11 00:00:00.123456789 | -3.0 | | 2021-08-11 00:00:00.123456789 | 2021-10-11 00:00:00.123456789 | -2.0 | | 2021-09-11 00:00:00.123456789 | 2021-10-11 00:00:00.123456789 | -1.0 | | 2021-10-11 00:00:00.123456789 | 2021-10-11 00:00:00.123456789 | 0.0 | +------------+------------+------------+
NEXT_DAY
Sintaksis
STRING NEXT_DAY(TIMESTAMP|DATE|DATETIME|STRING <startdate>, STRING <week>)Deskripsi
Mengembalikan tanggal hari pertama yang lebih lambat dari startdate dan sesuai dengan nilai week. Tanggal hari tertentu di minggu berikutnya dikembalikan. Fungsi ini merupakan bagian dari MaxCompute V2.0.
Parameter
Parameter
Diperlukan
Deskripsi
startdate
Ya
Nilai tanggal bertipe DATE, DATETIME, TIMESTAMP, atau STRING. Nilai input dalam format
yyyy-mm-dd,yyyy-mm-dd hh:mi:ss, atauyyyy-mm-dd hh:mi:ss.ff3. Jika nilainya bertipe STRING, nilai tersebut harus mencakup setidaknya bagianyyyy-mm-dddan tidak boleh mengandung string tambahan.week
Ya
Nilai bertipe STRING. Nilai parameter ini dapat berupa dua atau tiga huruf pertama dari nama hari dalam seminggu atau nama lengkap hari tersebut, seperti MO, TUE, atau FRIDAY.
Nilai Kembali
Nilai bertipe STRING dikembalikan. Nilai kembali dalam format
yyyy-mm-dd. Nilai kembali bervariasi berdasarkan aturan berikut:Jika nilai date bukan bertipe TIMESTAMP, DATE, DATETIME, atau STRING atau formatnya tidak memenuhi persyaratan, null dikembalikan.
Jika nilai date adalah null, kesalahan dikembalikan.
Jika nilai week adalah null, null dikembalikan.
Contoh
Contoh data statis
-- Nilai kembali adalah 2017-08-08. SELECT NEXT_DAY('2017-08-01','TU'); -- Nilai kembali adalah 2017-08-08. SELECT NEXT_DAY('2017-08-01 23:34:00', 'TU'); -- Nilai kembali adalah NULL. SELECT NEXT_DAY('20170801','TU'); -- Nilai kembali adalah NULL. SELECT NEXT_DAY('2017-08-01 23:34:00', null);Contoh data tabel
Mendapatkan tanggal hari di minggu berikutnya yang sesuai dengan setiap nilai tanggal di kolom date1, datetime1, timestamp1, dan date3. Data dalam Data Contoh digunakan dalam contoh ini. Pernyataan contoh:
-- Aktifkan edisi tipe data MaxCompute V2.0. Kirim pernyataan SET berikut bersama dengan pernyataan SQL. SET odps.sql.type.system.odps2=true; SELECT date1, NEXT_DAY(date1,'MON') AS date1_next_day, datetime1, NEXT_DAY(datetime1,'TUE') AS datetime1_next_day, timestamp1, NEXT_DAY(timestamp1,'WED') AS timestamp1_next_day, date3, NEXT_DAY(date3,'THU') AS date3_next_day FROM mf_date_fun_t;Hasil berikut dikembalikan.
+------------+----------------+---------------------+--------------------+-------------------------------+---------------------+------------+----------------+ | date1 | date1_next_day | datetime1 | datetime1_next_day | timestamp1 | timestamp1_next_day | date3 | date3_next_day | +------------+----------------+---------------------+--------------------+-------------------------------+---------------------+------------+----------------+ | 2021-11-29 | 2021-12-06 | 2021-11-29 00:01:00 | 2021-11-30 | 2021-01-11 00:00:00.123456789 | 2021-01-13 | 2021-11-20 | 2021-11-25 | | 2021-11-28 | 2021-11-29 | 2021-11-28 00:02:00 | 2021-11-30 | 2021-02-11 00:00:00.123456789 | 2021-02-17 | 2021-11-21 | 2021-11-25 | | 2021-11-27 | 2021-11-29 | 2021-11-27 00:03:00 | 2021-11-30 | 2021-03-11 00:00:00.123456789 | 2021-03-17 | 2021-11-22 | 2021-11-25 | | 2021-11-26 | 2021-11-29 | 2021-11-26 00:04:00 | 2021-11-30 | 2021-04-11 00:00:00.123456789 | 2021-04-14 | 2021-11-23 | 2021-11-25 | | 2021-11-25 | 2021-11-29 | 2021-11-25 00:05:00 | 2021-11-30 | 2021-05-11 00:00:00.123456789 | 2021-05-12 | 2021-11-24 | 2021-11-25 | | 2021-11-24 | 2021-11-29 | 2021-11-24 00:06:00 | 2021-11-30 | 2021-06-11 00:00:00.123456789 | 2021-06-16 | 2021-11-25 | 2021-12-02 | | 2021-11-23 | 2021-11-29 | 2021-11-23 00:07:00 | 2021-11-30 | 2021-07-11 00:00:00.123456789 | 2021-07-14 | 2021-11-26 | 2021-12-02 | | 2021-11-22 | 2021-11-29 | 2021-11-22 00:08:00 | 2021-11-23 | 2021-08-11 00:00:00.123456789 | 2021-08-18 | 2021-11-27 | 2021-12-02 | | 2021-11-21 | 2021-11-22 | 2021-11-21 00:09:00 | 2021-11-23 | 2021-09-11 00:00:00.123456789 | 2021-09-15 | 2021-11-28 | 2021-12-02 | | 2021-11-20 | 2021-11-22 | 2021-11-20 00:10:00 | 2021-11-23 | 2021-10-11 00:00:00.123456789 | 2021-10-13 | 2021-11-29 | 2021-12-02 | +------------+----------------+---------------------+--------------------+-------------------------------+---------------------+------------+----------------+
NOW
Sintaksis
DATETIME NOW()Deskripsi
Mengembalikan tanggal dan waktu sistem saat ini.
Nilai Pengembalian
Nilai dengan tipe DATETIME dikembalikan. Nilai kembali berada dalam format
yyyy-mm-dd hh:mi:ss.SSS.Contoh
Tidak ada format yang ditentukan. Bagian milidetik dalam nilai yang dikembalikan dapat mencakup 1, 2, atau 3 digit.
SELECT NOW();Hasil berikut dikembalikan.
+------+ | _c0 | +------+ | 2023-06-13 10:53:24.967 | +------+Format waktu ditentukan.
SELECT DATE_FORMAT(NOW(),'yyyy-MM-dd hh:mi:ss.SSS');Hasil berikut dikembalikan.
+-----+ | _c0 | +-----+ | 2023-06-13 10:53:53.899 | +-----+
QUARTER
Sintaksis
INT QUARTER(DATETIME|TIMESTAMP|DATE|STRING <date>)Deskripsi
Mengembalikan kuartal di mana nilai tanggal berada. Nilai yang valid: 1 hingga 4. Fungsi ini merupakan bagian dari MaxCompute V2.0.
Parameter
date: wajib. Nilai tanggal dengan tipe DATETIME, TIMESTAMP, DATE, atau STRING. Nilai input berada dalam format
yyyy-mm-dd,yyyy-mm-dd hh:mi:ss, atauyyyy-mm-dd hh:mi:ss:ff3. Jika nilainya bertipe STRING, nilai tersebut harus mencakup setidaknya bagianyyyy-mm-dddan tidak boleh mengandung string tambahan.Nilai Pengembalian
Nilai dengan tipe INT dikembalikan. Nilai pengembalian bervariasi berdasarkan aturan berikut:
Jika nilai dari date bukan bertipe DATETIME, TIMESTAMP, DATE, atau STRING atau formatnya tidak memenuhi persyaratan, null dikembalikan.
Jika nilai dari date adalah null, null dikembalikan.
Contoh
Contoh data statis
-- Nilai pengembalian adalah 4. SELECT QUARTER('1970-11-12 10:00:00'); -- Nilai pengembalian adalah 4. SELECT QUARTER('1970-11-12'); -- Nilai pengembalian adalah NULL. SELECT QUARTER(null);Contoh data tabel
Mendapatkan kuartal di mana setiap nilai tanggal dalam kolom date1, datetime1, timestamp1, dan date3 berada. Data dalam Data Contoh digunakan dalam contoh ini. Pernyataan contoh:
-- Aktifkan edisi tipe data MaxCompute V2.0. Kirimkan pernyataan SET berikut bersama dengan pernyataan SQL. SET odps.sql.type.system.odps2=true; SELECT date1, QUARTER(date1) AS date1_quarter, datetime1, QUARTER(datetime1) AS datetime1_quarter, timestamp1, QUARTER(timestamp1) AS timestamp1_quarter, date3, QUARTER(date3) AS date3_quarter FROM mf_date_fun_t;Hasil berikut dikembalikan.
+------------+---------------+---------------------+-------------------+-------------------------------+--------------------+------------+---------------+ | date1 | date1_quarter | datetime1 | datetime1_quarter | timestamp1 | timestamp1_quarter | date3 | date3_quarter | +------------+---------------+---------------------+-------------------+-------------------------------+--------------------+------------+---------------+ | 2021-11-29 | 4 | 2021-11-29 00:01:00 | 4 | 2021-01-11 00:00:00.123456789 | 1 | 2021-11-20 | 4 | | 2021-11-28 | 4 | 2021-11-28 00:02:00 | 4 | 2021-02-11 00:00:00.123456789 | 1 | 2021-11-21 | 4 | | 2021-11-27 | 4 | 2021-11-27 00:03:00 | 4 | 2021-03-11 00:00:00.123456789 | 1 | 2021-11-22 | 4 | | 2021-11-26 | 4 | 2021-11-26 00:04:00 | 4 | 2021-04-11 00:00:00.123456789 | 2 | 2021-11-23 | 4 | | 2021-11-25 | 4 | 2021-11-25 00:05:00 | 4 | 2021-05-11 00:00:00.123456789 | 2 | 2021-11-24 | 4 | | 2021-11-24 | 4 | 2021-11-24 00:06:00 | 4 | 2021-06-11 00:00:00.123456789 | 2 | 2021-11-25 | 4 | | 2021-11-23 | 4 | 2021-11-23 00:07:00 | 4 | 2021-07-11 00:00:00.123456789 | 3 | 2021-11-26 | 4 | | 2021-11-22 | 4 | 2021-11-22 00:08:00 | 4 | 2021-08-11 00:00:00.123456789 | 3 | 2021-11-27 | 4 | | 2021-11-21 | 4 | 2021-11-21 00:09:00 | 4 | 2021-09-11 00:00:00.123456789 | 3 | 2021-11-28 | 4 | | 2021-11-20 | 4 | 2021-11-20 00:10:00 | 4 | 2021-10-11 00:00:00.123456789 | 4 | 2021-11-29 | 4 | +------------+---------------+---------------------+-------------------+-------------------------------+--------------------+------------+---------------+
KEDUA
Sintaksis
INT SECOND(DATETIME|TIMESTAMP|STRING <date>)Deskripsi
Mengembalikan komponen detik dari nilai tanggal. Fungsi ini merupakan bagian dari MaxCompute V2.0.
Parameter
date: wajib. Nilai tanggal dengan tipe DATETIME, TIMESTAMP, atau STRING. Nilai tanggal berada dalam format
yyyy-mm-dd hh:mi:ssatauyyyy-mm-dd hh:mi:ss.ff3.Nilai Kembali
Nilai dengan tipe INT dikembalikan. Nilai kembali bervariasi berdasarkan aturan berikut:
Jika nilai dari date bukan bertipe DATETIME, TIMESTAMP, atau STRING atau formatnya tidak memenuhi persyaratan, null dikembalikan.
Jika nilai dari date adalah null, null dikembalikan.
Contoh
Contoh data statis
-- Nilai kembali adalah 45. SELECT SECOND('2014-09-01 12:30:45'); -- Nilai kembali adalah 45. SELECT SECOND('12:30:45'); -- Nilai kembali adalah NULL. SELECT SECOND('20140901123045'); -- Nilai kembali adalah NULL. SELECT SECOND(null);Contoh data tabel
Mendapatkan komponen detik dari nilai tanggal di kolom datetime1 dan timestamp1. Data dalam Data Contoh digunakan dalam contoh ini. Pernyataan contoh:
-- Aktifkan edisi tipe data MaxCompute V2.0. Kirim pernyataan SET berikut bersama dengan pernyataan SQL. SET odps.sql.type.system.odps2=true; SELECT datetime1, SECOND(datetime1) AS datetime1_second, timestamp1, SECOND(timestamp1) AS timestamp1_second FROM mf_date_fun_t;Hasil berikut dikembalikan.
+---------------------+------------------+-------------------------------+-------------------+ | datetime1 | datetime1_second | timestamp1 | timestamp1_second | +---------------------+------------------+-------------------------------+-------------------+ | 2021-11-29 00:01:00 | 0 | 2021-01-11 00:00:00.123456789 | 0 | | 2021-11-28 00:02:00 | 0 | 2021-02-11 00:00:00.123456789 | 0 | | 2021-11-27 00:03:00 | 0 | 2021-03-11 00:00:00.123456789 | 0 | | 2021-11-26 00:04:00 | 0 | 2021-04-11 00:00:00.123456789 | 0 | | 2021-11-25 00:05:00 | 0 | 2021-05-11 00:00:00.123456789 | 0 | | 2021-11-24 00:06:00 | 0 | 2021-06-11 00:00:00.123456789 | 0 | | 2021-11-23 00:07:00 | 0 | 2021-07-11 00:00:00.123456789 | 0 | | 2021-11-22 00:08:00 | 0 | 2021-08-11 00:00:00.123456789 | 0 | | 2021-11-21 00:09:00 | 0 | 2021-09-11 00:00:00.123456789 | 0 | | 2021-11-20 00:10:00 | 0 | 2021-10-11 00:00:00.123456789 | 0 | +---------------------+------------------+-------------------------------+-------------------+
TO_CHAR
Sintaksis
STRING TO_CHAR(DATETIME <date>, STRING <format>)Deskripsi
Mengonversi nilai tanggal tipe DATETIME menjadi string dalam format tertentu.
Parameter
Parameter
Diperlukan
Deskripsi
date
Ya
Nilai tanggal tipe DATETIME. Nilai tanggal berada dalam format
yyyy-mm-dd hh:mi:ss. Jika nilai input adalah tipe STRING dan edisi tipe data MaxCompute V1.0 digunakan dalam proyek Anda, nilai input secara implisit dikonversi ke tipe DATETIME sebelum perhitungan.format
Ya
Konstanta tipe STRING. Dalam nilai format, bagian format tanggal diganti dengan data terkait dan karakter lainnya tetap tidak berubah dalam output.
Nilai Kembali
Nilai bertipe STRING dikembalikan. Nilai kembali bervariasi berdasarkan aturan berikut:
Jika nilai date bukan bertipe DATETIME atau STRING, kesalahan dikembalikan.
Jika nilai date adalah null, kesalahan dikembalikan.
Jika nilai format adalah null, null dikembalikan.
Contoh
Contoh data statis
Contoh 1
--Jika klien MaxCompute berjalan di Windows, karakter Cina mungkin tidak ditampilkan dengan benar dalam hasil yang dikembalikan. SELECT TO_CHAR(DATETIME '2010-12-03 00:00:00','Alibaba Finance yyyy-mm*dd');Hasil berikut dikembalikan.
+------------+ | _c0 | +------------+ | Alibaba Finance 2010-12*03 | +------------+Contoh 2
SELECT TO_CHAR(DATETIME '2008-07-18 00:00:00','yyyymmdd');Hasil berikut dikembalikan.
+------------+ | _c0 | +------------+ | 20080718 | +------------+Contoh 3
SET odps.sql.type.system.odps2=false; SELECT TO_CHAR('2008-07-18 00:00:00', 'yyyymmdd');Hasil berikut dikembalikan.
+------------+ | _c0 | +------------+ | 20080718 | +------------+Contoh 4
-- 'Alibaba 2010-12*3' tidak dapat dikonversi menjadi nilai tanggal standar, dan kesalahan dikembalikan. SELECT TO_CHAR(DATETIME 'Alibaba 2010-12*3', 'Alibaba yyyy-mm*dd');Contoh 5
--'20102401' bukan nilai tanggal standar, dan kesalahan dikembalikan. SELECT TO_CHAR(DATETIME '20102401', 'yyyy');Contoh 6
SELECT TO_CHAR(DATETIME '2010-12-03 00:00:00', null);Hasil berikut dikembalikan.
+------------+ | _c0 | +------------+ | NULL | +------------+
Contoh data tabel
Konversikan nilai tanggal di kolom datetime1 menjadi string dalam format tertentu. Data dalam Data Contoh digunakan dalam contoh ini. Pernyataan sampel:
SELECT datetime1, TO_CHAR(datetime1,'yyyy-mm-dd') AS datetime1_to_char FROM mf_date_fun_t;Hasil berikut dikembalikan.
+---------------------+-------------------+ | datetime1 | datetime1_to_char | +---------------------+-------------------+ | 2021-11-29 00:01:00 | 2021-11-29 | | 2021-11-28 00:02:00 | 2021-11-28 | | 2021-11-27 00:03:00 | 2021-11-27 | | 2021-11-26 00:04:00 | 2021-11-26 | | 2021-11-25 00:05:00 | 2021-11-25 | | 2021-11-24 00:06:00 | 2021-11-24 | | 2021-11-23 00:07:00 | 2021-11-23 | | 2021-11-22 00:08:00 | 2021-11-22 | | 2021-11-21 00:09:00 | 2021-11-21 | | 2021-11-20 00:10:00 | 2021-11-20 | +---------------------+-------------------+
TO_DATE
Sintaksis
DATETIME|DATE TO_DATE(STRING <date>[, STRING <format>])Deskripsi
tanggal dalam format tertentu.
Parameter
Parameter
Diperlukan
Deskripsi
date
Ya
Nilai tanggal bertipe STRING. Parameter ini menentukan string tanggal yang ingin Anda konversi. Jika nilai input bertipe BIGINT, DOUBLE, DECIMAL, atau DATETIME, nilai tersebut akan dikonversi secara implisit ke nilai bertipe STRING sebelum perhitungan. String tanggal juga dapat berada dalam format ISO 8601.
format
Tidak
Konstanta bertipe STRING. Parameter ini menentukan format tanggal. format tidak mendukung EDTF. Karakter lain diabaikan sebagai karakter tidak valid selama penguraian.
Nilai tersebut harus berisi
yyyy. Jika tidak, NULL akan dikembalikan. Jika terdapat string format tambahan dalam format, fungsi ini mengonversi string tanggal yang sesuai dengan string format pertama menjadi nilai tanggal. Sisanya dianggap sebagai pemisah. Sebagai contoh,TO_DATE("1234-2234", "yyyy-yyyy")mengembalikan1234-01-01 00:00:00.yyyymenunjukkan tahun 4 digit.mmmenunjukkan bulan 2 digit.ddmenunjukkan hari 2 digit.hhmenunjukkan jam berdasarkan sistem 24 jam.mimenunjukkan menit 2 digit.ssmenunjukkan detik 2 digit.ff3menunjukkan milidetik 3 digit.
Nilai Kembali
Nilai bertipe DATE atau DATETIME dikembalikan.
Jika parameter format tidak termasuk dalam parameter input dan string yang perlu dikonversi berada dalam format yyyy-mm-dd atau
yyyy-mm-dd hh:mi:ss, nilai dengan tipe DATE dalam formatyyyy-mm-ddakan dikembalikan. Namun, jika parameter format tidak termasuk dalam parameter input dan string yang perlu dikonversi tidak dalam format yyyy-mm-dd atau yyyy-mm-dd hh:mi:ss, maka null akan dikembalikan.Jika parameter format termasuk dalam parameter input, nilai dengan tipe DATETIME dalam format
yyyy-mm-dd hh:mi:ssakan dikembalikan. Jika nilai dari date atau format adalah null, null akan dikembalikan.
Contoh
Contoh data statis
-- Nilai kembali adalah 2010-12-03 00:00:00. SELECT TO_DATE('Alibaba 2010-12*03', 'Alibaba yyyy-mm*dd'); -- Nilai kembali adalah 2008-07-18 00:00:00. SELECT TO_DATE('20080718', 'yyyymmdd'); -- Nilai kembali adalah 2008-07-18 20:30:00. SELECT TO_DATE('200807182030','yyyymmddhhmi'); -- '2008718' tidak dapat dikonversi menjadi nilai tanggal standar, dan kesalahan dikembalikan. Nilai harus ditulis sebagai '20080718'. SELECT TO_DATE('2008718', 'yyyymmdd'); -- 'Alibaba 2010-12*3' tidak dapat dikonversi menjadi nilai tanggal standar, dan kesalahan dikembalikan. Nilai harus ditulis sebagai 'Alibaba 2010-12*03'. SELECT TO_DATE('Alibaba 2010-12*3', 'Alibaba yyyy-mm*dd'); -- '2010-24-01' tidak dapat dikonversi menjadi nilai tanggal standar, dan kesalahan dikembalikan. Nilai harus ditulis sebagai '2010-01-24'. SELECT TO_DATE('2010-24-01', 'yyyy-mm-dd'); -- Nilai kembali adalah 2018-10-30 15:13:12. SELECT TO_DATE('20181030 15-13-12.345','yyyymmdd hh-mi-ss.ff3'); -- Nilai kembali adalah NULL. SELECT TO_DATE(null,'yyyymmdd hh-mi-ss.ff3'); -- Nilai kembali adalah NULL. SELECT TO_DATE('20181030 15-13-12.345', null); -- Jika nilai input berada dalam format ISO 8601, nilai kembali adalah 2021-09-24 13:39:34. SELECT TO_DATE('2021-09-24T13:39:34.119Z', 'yyyy-MM-ddThh:mi:ss.ff3Z'); -- Nilai kembali adalah 2021-09-24, dan tipe datanya adalah DATE. SELECT TO_DATE('2021-09-24'); -- Nilai kembali adalah 2021-09-24, dan tipe datanya adalah DATE. SELECT TO_DATE('2021-09-24 13:39:34'); -- Nilai kembali adalah NULL. SELECT TO_DATE('20210924');Contoh data tabel
Konversikan nilai tanggal pada kolom date3 menjadi format tanggal tertentu. Data dalam Data sampel digunakan untuk contoh ini. Pernyataan sampel:
SELECT date3, TO_DATE(date3, 'yyyy-mm-dd') AS date3_to_date FROM mf_date_fun_t;Hasil berikut diperoleh:
+------------+---------------------+ | date3 | date3_to_date | +------------+---------------------+ | 2021-11-20 | 2021-11-20 00:00:00 | | 2021-11-21 | 2021-11-21 00:00:00 | | 2021-11-22 | 2021-11-22 00:00:00 | | 2021-11-23 | 2021-11-23 00:00:00 | | 2021-11-24 | 2021-11-24 00:00:00 | | 2021-11-25 | 2021-11-25 00:00:00 | | 2021-11-26 | 2021-11-26 00:00:00 | | 2021-11-27 | 2021-11-27 00:00:00 | | 2021-11-28 | 2021-11-28 00:00:00 | | 2021-11-29 | 2021-11-29 00:00:00 | +------------+---------------------+
TO_MILLIS
Sintaksis
BIGINT TO_MILLIS(DATETIME|TIMESTAMP <date>);Deskripsi
Mengonversi nilai tanggal menjadi timestamp UNIX yang akurat hingga milidetik. Fungsi ini merupakan bagian dari MaxCompute V2.0.
Parameter
tanggal: wajib. Nilai tanggal dengan tipe DATETIME atau TIMESTAMP. Nilai tanggal berada dalam format
yyyy-mm-dd hh:mi:ssatauyyyy-mm-dd hh:mi:ss.ff3.Nilai Kembali
Nilai bertipe BIGINT dikembalikan. Nilai kembali bervariasi berdasarkan aturan berikut:
Jika nilai tanggal bukan bertipe DATETIME atau TIMESTAMP, kesalahan akan dikembalikan.
Jika nilai tanggal adalah null, kesalahan akan dikembalikan.
Contoh
Contoh data statis
-- Nilai kembali adalah 1617174900000. SELECT TO_MILLIS(datetime '2021-03-31 15:15:00'); -- Nilai kembali adalah 1617174900000. SET odps.sql.type.system.odps2=true; SELECT TO_MILLIS(timestamp '2021-03-31 15:15:00');Contoh data tabel
Konversikan nilai tanggal di kolom datetime1 dan timestamp1 menjadi timestamp UNIX yang akurat hingga milidetik. Data dalam Data Sampel digunakan dalam contoh ini. Pernyataan sampel:
-- Aktifkan edisi tipe data MaxCompute V2.0. Kirim pernyataan SET berikut bersama dengan pernyataan SQL. SET odps.sql.type.system.odps2=true; SELECT datetime1, TO_MILLIS(datetime1) AS datetime1_to_millis, timestamp1, TO_MILLIS(timestamp1) AS timestamp1_to_millis FROM mf_date_fun_t;Hasil berikut dikembalikan.
+---------------------+---------------------+-------------------------------+----------------------+ | datetime1 | datetime1_to_millis | timestamp1 | timestamp1_to_millis | +---------------------+---------------------+-------------------------------+----------------------+ | 2021-11-29 00:01:00 | 1638115260000 | 2021-01-11 00:00:00.123456789 | 1610294400123 | | 2021-11-28 00:02:00 | 1638028920000 | 2021-02-11 00:00:00.123456789 | 1612972800123 | | 2021-11-27 00:03:00 | 1637942580000 | 2021-03-11 00:00:00.123456789 | 1615392000123 | | 2021-11-26 00:04:00 | 1637856240000 | 2021-04-11 00:00:00.123456789 | 1618070400123 | | 2021-11-25 00:05:00 | 1637769900000 | 2021-05-11 00:00:00.123456789 | 1620662400123 | | 2021-11-24 00:06:00 | 1637683560000 | 2021-06-11 00:00:00.123456789 | 1623340800123 | | 2021-11-23 00:07:00 | 1637597220000 | 2021-07-11 00:00:00.123456789 | 1625932800123 | | 2021-11-22 00:08:00 | 1637510880000 | 2021-08-11 00:00:00.123456789 | 1628611200123 | | 2021-11-21 00:09:00 | 1637424540000 | 2021-09-11 00:00:00.123456789 | 1631289600123 | | 2021-11-20 00:10:00 | 1637338200000 | 2021-10-11 00:00:00.123456789 | 1633881600123 | +---------------------+---------------------+-------------------------------+----------------------+
TRUNC_TIME
Format Perintah
string TRUNC_TIME(date|datetime|timestamp|timestamp_ntz <date>, string <datepart>)Deskripsi
Memotong data tipe tanggal atau waktu sesuai dengan unit waktu yang ditentukan oleh datepart dan mengembalikan data tipe STRING.
Parameter
date: Diperlukan. Mendukung tipe DATE, DATETIME, TIMESTAMP, atau TIMESTAMP_NTZ. Jika input adalah tipe STRING dan versi tipe data dari proyek MaxCompute adalah 1.0, maka akan dikonversi secara implisit ke tipe DATETIME sebelum perhitungan.
datepart: Diperlukan. Konstanta tipe STRING, tidak peka huruf besar/kecil, mendukung
year,month,day, danhour.
Nilai Kembali
Mengembalikan tipe STRING.
Format STRING adalah sebagai berikut:
Ketika datepart adalah 'year': Mengembalikan format STRING
yyyy.Ketika datepart adalah 'month': Mengembalikan format STRING
yyyy-mm.Ketika datepart adalah 'day': Mengembalikan format STRING
yyyy-mm-dd.Ketika datepart adalah 'hour': Mengembalikan format STRING
yyyy-mm-dd hh:mm:ss.
Aturan Pengembalian:
Ketika date bukan tipe DATE, DATETIME, TIMESTAMP, atau TIMESTAMP_NTZ, kesalahan akan dikembalikan. Tipe STRING untuk date hanya didukung ketika versi tipe data dari proyek MaxCompute adalah 1.0.
Ketika datepart adalah NULL, kesalahan akan dikembalikan.
Contoh
Waktu sebagai tipe DATETIME
Sebagai contoh, ketika zona waktu Session atau Project saat ini adalah UTC+8, waktu lokal adalah datetime '2025-06-03 07:15:08', fungsi TRUNC_TIME pertama-tama mengonversi waktu lokal menjadi waktu UTC '2025-06-02 23:15:08', kemudian memotong sesuai dengan datepart, dan mengembalikan hasilnya sebagai tipe STRING.
SET odps.sql.timezone=Asia/Shanghai; SELECT TRUNC_TIME(datetime '2025-06-03 07:15:08','year') as tc_year, TRUNC_TIME(datetime '2025-06-03 07:15:08','month') as tc_month, TRUNC_TIME(datetime '2025-06-03 07:15:08','day') as tc_date, TRUNC_TIME(datetime '2025-06-03 07:15:08','hour') as tc_hour;Hasil berikut dikembalikan.
+------------+------------+------------+------------+ | tc_year | tc_month | tc_date | tc_hour | +------------+------------+------------+------------+ | 2025 | 2025-06 | 2025-06-02 | 2025-06-02 23:00:00 | +------------+------------+------------+------------+Waktu sebagai tipe DATE
Sebagai contoh, waktu input adalah date '2025-06-10', fungsi TRUNC_TIME memotong data tipe DATE sesuai dengan unit waktu yang ditentukan oleh datepart, dan mengembalikan tipe STRING.
SELECT TRUNC_TIME(date '2025-06-10','year' ), TRUNC_TIME(date '2025-06-10','month' ), TRUNC_TIME(date '2025-06-10','day' );Hasil berikut dikembalikan.
+------------+------------+------------+ | _c0 | _c1 | _c2 | +------------+------------+------------+ | 2025 | 2025-06 | 2025-06-10 | +------------+------------+------------+Waktu sebagai tipe STRING
Sebagai contoh, waktu input adalah tipe STRING '2025-06-03 15:30:30'. Anda harus menyetel versi tipe data dari proyek MaxCompute ke 1.0 agar dapat dikonversi secara implisit ke tipe DATETIME sebelum perhitungan. Jika tidak, kesalahan akan dikembalikan.
SET odps.sql.type.system.odps2=false; SELECT TRUNC_TIME('2025-06-03 15:30:30','hour');Hasil berikut dikembalikan.
+------------+ | _c0 | +------------+ | 2025-06-03 07:00:00 | +------------+
UNIX_TIMESTAMP
Sintaksis
BIGINT UNIX_TIMESTAMP(DATETIME|DATE|TIMESTAMP|STRING <date>)Deskripsi
Mengonversi nilai tanggal menjadi timestamp UNIX yang merupakan bilangan bulat.
Parameter
tanggal: wajib. Nilai tanggal dengan tipe DATETIME, DATE, TIMESTAMP, atau STRING. Format nilai input adalah
yyyy-mm-dd hh:mi:ss,yyyy-mm-dd, atauyyyy-mm-dd hh:mi:ss.ff3. Jika nilai input bertipe STRING dan edisi tipe data MaxCompute V1.0 digunakan di proyek Anda, nilai input akan secara implisit dikonversi menjadi tipe DATETIME sebelum perhitungan. Untuk informasi lebih lanjut tentang edisi tipe data MaxCompute V1.0, lihat Edisi tipe data MaxCompute V1.0. Jika Anda mengaktifkan edisi tipe data MaxCompute V2.0, konversi implisit tidak akan berhasil. Dalam hal ini, gunakan fungsiCAST, sepertiunix_timestamp(cast(... as datetime)), untuk mengonversi tipe data. Anda juga dapat menonaktifkan edisi tipe data MaxCompute V2.0. Untuk informasi lebih lanjut tentang edisi tipe data MaxCompute V2.0, lihat Sistem tipe data MaxCompute versi 2.0.CatatanJika nilai input adalah konstanta dan bukan nilai dalam tabel, nilai input berada dalam format
DATETIME'yyyy-mm-dd hh:mi:ss',DATE'yyyy-mm-dd', atauTIMESTAMP'yyyy-mm-dd hh:mi:ss.ff3'. Jika nilai input tidak mengandung kata kunci dari tipe data dan berada dalam format'yyyy-mm-dd hh:mi:ss', nilai input dikenali sebagai nilai tipe STRING.Nilai Pengembalian
Timestamp UNIX dengan tipe BIGINT dikembalikan. Nilai pengembalian bervariasi berdasarkan aturan berikut:
Jika nilai dari tanggal bukan bertipe DATETIME, DATE, TIMESTAMP, atau STRING atau formatnya tidak memenuhi persyaratan, kesalahan dikembalikan atau null dikembalikan.
Jika nilai dari tanggal adalah null, null dikembalikan.
Contoh
Contoh data statis
-- Nilai pengembalian adalah 1699585860. SELECT UNIX_TIMESTAMP(DATETIME'2023-11-10 11:11:00'); -- Nilai pengembalian adalah 1699545600. SET odps.sql.type.system.odps2=true; SELECT UNIX_TIMESTAMP(DATE'2023-11-10'); -- Nilai pengembalian adalah 1699585860. SET odps.sql.type.system.odps2=true; SELECT UNIX_TIMESTAMP(TIMESTAMP'2023-11-10 11:11:00.123456789'); -- Nilai pengembalian adalah 1237518660. SET odps.sql.type.system.odps2=false; SELECT UNIX_TIMESTAMP('2009-03-20 11:11:00'); -- Nilai pengembalian adalah NULL. SELECT UNIX_TIMESTAMP(null);Contoh data tabel
Konversikan nilai tanggal di kolom date1, datetime1, dan timestamp1 menjadi timestamp UNIX yang merupakan bilangan bulat. Data dalam Data Contoh digunakan dalam contoh ini. Pernyataan sampel:
-- Aktifkan edisi tipe data MaxCompute V2.0. Kirimkan pernyataan SET berikut bersama dengan pernyataan SQL. SET odps.sql.type.system.odps2=true; SELECT date1, UNIX_TIMESTAMP(date1) AS date1_unix_timestamp, datetime1, UNIX_TIMESTAMP(datetime1) AS datetime1_unix_timestamp, timestamp1, UNIX_TIMESTAMP(timestamp1) AS timestamp1_unix_timestamp FROM mf_date_fun_t;Hasil berikut dikembalikan.
+------------+----------------------+---------------------+--------------------------+------------------------------+---------------------------+ | date1 | date1_unix_timestamp | datetime1 | datetime1_unix_timestamp | timestamp1 | timestamp1_unix_timestamp | +------------+----------------------+---------------------+--------------------------+------------------------------+---------------------------+ | 2021-11-29 | 1638115200 | 2021-11-29 00:01:00 | 1638115260 | 2021-01-11 00:00:00.123456789 | 1610294400 | | 2021-11-28 | 1638028800 | 2021-11-28 00:02:00 | 1638028920 | 2021-02-11 00:00:00.123456789 | 1612972800 | | 2021-11-27 | 1637942400 | 2021-11-27 00:03:00 | 1637942580 | 2021-03-11 00:00:00.123456789 | 1615392000 | | 2021-11-26 | 1637856000 | 2021-11-26 00:04:00 | 1637856240 | 2021-04-11 00:00:00.123456789 | 1618070400 | | 2021-11-25 | 1637769600 | 2021-11-25 00:05:00 | 1637769900 | 2021-05-11 00:00:00.123456789 | 1620662400 | | 2021-11-24 | 1637683200 | 2021-11-24 00:06:00 | 1637683560 | 2021-06-11 00:00:00.123456789 | 1623340800 | | 2021-11-23 | 1637596800 | 2021-11-23 00:07:00 | 1637597220 | 2021-07-11 00:00:00.123456789 | 1625932800 | | 2021-11-22 | 1637510400 | 2021-11-22 00:08:00 | 1637510880 | 2021-08-11 00:00:00.123456789 | 1628611200 | | 2021-11-21 | 1637424000 | 2021-11-21 00:09:00 | 1637424540 | 2021-09-11 00:00:00.123456789 | 1631289600 | | 2021-11-20 | 1637337600 | 2021-11-20 00:10:00 | 1637338200 | 2021-10-11 00:00:00.123456789 | 1633881600 | +------------+----------------------+---------------------+--------------------------+------------------------------+---------------------------+
WEEKDAY
Sintaksis
BIGINT WEEKDAY(DATETIME <date>)Deskripsi
Mengembalikan angka yang mewakili hari dalam seminggu di mana nilai tanggal berada.
Parameter
tanggal: wajib. Nilai dari tipe DATETIME. Nilai tanggal harus dalam format
yyyy-mm-dd hh:mi:ss. Jika nilai input adalah tipe STRING dan edisi tipe data MaxCompute V1.0 digunakan dalam proyek Anda, nilai input secara implisit dikonversi ke tipe DATETIME sebelum perhitungan.Nilai Kembali
Nilai bertipe BIGINT dikembalikan. Nilai kembali bervariasi berdasarkan aturan berikut:
Senin dianggap sebagai hari pertama dalam seminggu dengan nilai kembali 0. Hari-hari dalam seminggu diberi nomor secara berurutan mulai dari 0. Nilai kembali untuk Minggu adalah 6.
Jika nilai dari tanggal bukan bertipe DATETIME atau STRING atau formatnya tidak sesuai dengan persyaratan, kesalahan akan dikembalikan.
Jika nilai dari tanggal adalah null, maka null akan dikembalikan.
Contoh
Contoh data statis
-- Nilai kembali adalah 4. SELECT WEEKDAY(datetime '2009-03-20 11:11:00'); -- Nilai kembali adalah 4. SET odps.sql.type.system.odps2=false; SELECT WEEKDAY('2009-03-20 11:11:00'); -- Nilai kembali adalah NULL. SELECT WEEKDAY(null);Contoh data tabel
Hitung hari dalam seminggu di mana setiap nilai tanggal dalam kolom datetime1 berada. Data dalam Data Contoh digunakan dalam contoh ini. Pernyataan contoh:
SELECT datetime1, WEEKDAY(datetime1) AS datetime1_weekday FROM mf_date_fun_t;Hasil berikut dikembalikan.
+---------------------+-------------------+ | datetime1 | datetime1_weekday | +---------------------+-------------------+ | 2021-11-29 00:01:00 | 0 | | 2021-11-28 00:02:00 | 6 | | 2021-11-27 00:03:00 | 5 | | 2021-11-26 00:04:00 | 4 | | 2021-11-25 00:05:00 | 3 | | 2021-11-24 00:06:00 | 2 | | 2021-11-23 00:07:00 | 1 | | 2021-11-22 00:08:00 | 0 | | 2021-11-21 00:09:00 | 6 | | 2021-11-20 00:10:00 | 5 | +---------------------+-------------------+
WEEKOFYEAR
Sintaksis
BIGINT WEEKOFYEAR(DATETIME <date>)Deskripsi
Mengembalikan angka yang mewakili minggu dalam setahun di mana nilai tanggal jatuh. Senin dianggap sebagai hari pertama dalam seminggu.
CatatanUntuk menentukan apakah suatu minggu termasuk dalam tahun berjalan atau tahun berikutnya, temukan tahun di mana lebih dari empat hari dalam minggu tersebut jatuh. Jika minggu tersebut termasuk dalam tahun berjalan, maka minggu itu dianggap sebagai minggu terakhir tahun tersebut. Jika minggu tersebut termasuk dalam tahun berikutnya, maka minggu itu dianggap sebagai minggu pertama tahun berikutnya.
Parameter
date: wajib. Nilai bertipe DATETIME. Nilai tanggal harus dalam format
yyyy-mm-dd hh:mi:ss. Jika nilai masukan bertipe STRING dan edisi tipe data MaxCompute V1.0 digunakan dalam proyek Anda, nilai masukan secara implisit dikonversi ke tipe DATETIME sebelum perhitungan dilakukan.Nilai Pengembalian
Nilai bertipe BIGINT dikembalikan. Nilai pengembalian bervariasi berdasarkan aturan berikut:
Jika nilai dari tanggal bukan bertipe DATETIME atau STRING atau formatnya tidak memenuhi persyaratan, null dikembalikan.
Jika nilai dari tanggal adalah null, null dikembalikan.
Contoh
Contoh data statis
-- Nilai 1 dikembalikan. 20141229 berada di tahun 2014, tetapi sebagian besar hari dalam minggu tersebut jatuh di tahun 2015. Oleh karena itu, nilai pengembalian 1 menunjukkan minggu pertama tahun 2015. SELECT WEEKOFYEAR(TO_DATE("20141229", "yyyymmdd")); -- Nilai pengembalian adalah 1. SELECT WEEKOFYEAR(TO_DATE("20141231", "yyyymmdd")); -- Nilai pengembalian adalah 53. SELECT WEEKOFYEAR(TO_DATE("20151229", "yyyymmdd")); -- Nilai pengembalian adalah 48. SET odps.sql.type.system.odps2=false; SELECT WEEKOFYEAR('2021-11-29 00:01:00'); -- Nilai pengembalian adalah NULL. SELECT WEEKOFYEAR('20141231'); -- Nilai pengembalian adalah NULL. SELECT WEEKOFYEAR(null);Contoh data tabel
Hitung minggu ke-n dalam setahun di mana setiap tanggal dalam kolom datetime1 jatuh. Data dalam Data Contoh digunakan dalam contoh ini. Pernyataan contoh:
SELECT datetime1, WEEKOFYEAR(datetime1) AS datetime1_weekofyear FROM mf_date_fun_t;Hasil berikut dikembalikan.
+---------------------+----------------------+ | datetime1 | datetime1_weekofyear | +---------------------+----------------------+ | 2021-11-29 00:01:00 | 48 | | 2021-11-28 00:02:00 | 47 | | 2021-11-27 00:03:00 | 47 | | 2021-11-26 00:04:00 | 47 | | 2021-11-25 00:05:00 | 47 | | 2021-11-24 00:06:00 | 47 | | 2021-11-23 00:07:00 | 47 | | 2021-11-22 00:08:00 | 47 | | 2021-11-21 00:09:00 | 46 | | 2021-11-20 00:10:00 | 46 | +---------------------+----------------------+
TAHUN
Sintaksis
INT YEAR(DATETIME|TIMESTAMP|DATE|STRING <date>)Deskripsi
Mengembalikan tahun di mana nilai tanggal berada. Fungsi ini merupakan bagian dari MaxCompute V2.0.
Parameter
date: wajib. Nilai tanggal dengan tipe DATETIME, TIMESTAMP, DATE, atau STRING. Nilai input berada dalam format
yyyy-mm-dd,yyyy-mm-dd hh:mi:ss, atauyyyy-mm-dd hh:mi:ss:ff3. Jika nilainya bertipe STRING, nilai tersebut harus mencakup setidaknya bagianyyyy-mm-dddan tidak boleh mengandung string tambahan.Nilai Pengembalian
Nilai dengan tipe INT dikembalikan. Nilai pengembalian bervariasi berdasarkan aturan berikut:
Jika nilai date bukan bertipe DATETIME, TIMESTAMP, DATE, atau STRING atau formatnya tidak memenuhi persyaratan, null dikembalikan.
Jika nilai date adalah null, null dikembalikan.
Contoh
Contoh data statis
-- Nilai pengembalian adalah 1970. SELECT YEAR('1970-01-01 12:30:00'); -- Nilai pengembalian adalah 1970. SELECT YEAR('1970-01-01'); -- Nilai pengembalian adalah 70. SELECT YEAR('70-01-01'); -- Nilai pengembalian adalah NULL. SELECT YEAR('1970/03/09'); -- Nilai pengembalian adalah NULL. SELECT YEAR(null);Contoh data tabel
Mendapatkan tahun di mana setiap nilai tanggal dalam kolom date1, datetime1, timestamp1, dan date3 berada. Data dalam Data Contoh digunakan dalam contoh ini. Pernyataan contoh:
-- Aktifkan edisi tipe data MaxCompute V2.0. Kirim pernyataan SET berikut bersama dengan pernyataan SQL. SET odps.sql.type.system.odps2=true; SELECT date1, YEAR(date1) AS date1_year, datetime1, YEAR(datetime1) AS datetime1_year, timestamp1, YEAR(timestamp1) AS timestamp1_year, date3, YEAR(date3) AS date3_year FROM mf_date_fun_t;Hasil berikut dikembalikan.
+------------+------------+---------------------+----------------+-------------------------------+-----------------+------------+------------+ | date1 | date1_year | datetime1 | datetime1_year | timestamp1 | timestamp1_year | date3 | date3_year | +------------+------------+---------------------+----------------+-------------------------------+-----------------+------------+------------+ | 2021-11-29 | 2021 | 2021-11-29 00:01:00 | 2021 | 2021-01-11 00:00:00.123456789 | 2021 | 2021-11-20 | 2021 | | 2021-11-28 | 2021 | 2021-11-28 00:02:00 | 2021 | 2021-02-11 00:00:00.123456789 | 2021 | 2021-11-21 | 2021 | | 2021-11-27 | 2021 | 2021-11-27 00:03:00 | 2021 | 2021-03-11 00:00:00.123456789 | 2021 | 2021-11-22 | 2021 | | 2021-11-26 | 2021 | 2021-11-26 00:04:00 | 2021 | 2021-04-11 00:00:00.123456789 | 2021 | 2021-11-23 | 2021 | | 2021-11-25 | 2021 | 2021-11-25 00:05:00 | 2021 | 2021-05-11 00:00:00.123456789 | 2021 | 2021-11-24 | 2021 | | 2021-11-24 | 2021 | 2021-11-24 00:06:00 | 2021 | 2021-06-11 00:00:00.123456789 | 2021 | 2021-11-25 | 2021 | | 2021-11-23 | 2021 | 2021-11-23 00:07:00 | 2021 | 2021-07-11 00:00:00.123456789 | 2021 | 2021-11-26 | 2021 | | 2021-11-22 | 2021 | 2021-11-22 00:08:00 | 2021 | 2021-08-11 00:00:00.123456789 | 2021 | 2021-11-27 | 2021 | | 2021-11-21 | 2021 | 2021-11-21 00:09:00 | 2021 | 2021-09-11 00:00:00.123456789 | 2021 | 2021-11-28 | 2021 | | 2021-11-20 | 2021 | 2021-11-20 00:10:00 | 2021 | 2021-10-11 00:00:00.123456789 | 2021 | 2021-11-29 | 2021 | +------------+------------+---------------------+----------------+-------------------------------+-----------------+------------+------------+
Referensi
Jika fungsi bawaan sebelumnya tidak memenuhi kebutuhan bisnis Anda, MaxCompute juga mendukung fungsi yang ditentukan pengguna (UDF). Untuk informasi lebih lanjut tentang UDF, lihat Ikhtisar.
Untuk informasi lebih lanjut tentang FAQ tentang MaxCompute SQL, lihat topik-topik berikut:
Untuk informasi lebih lanjut tentang kesalahan umum dan FAQ tentang fungsi bawaan MaxCompute, lihat topik-topik berikut: