Topik ini menjelaskan sintaks dan parameter fungsi tanggal yang didukung oleh MaxCompute serta menyediakan contoh penggunaannya. Anda dapat memilih fungsi tanggal yang sesuai untuk melakukan perhitungan atau konversi tanggal berdasarkan kebutuhan bisnis Anda.
Function | Description |
Mengembalikan nilai tanggal setelah sejumlah bulan ditambahkan ke tanggal tertentu. | |
Mengembalikan timestamp saat ini. | |
Mengembalikan zona waktu sistem saat ini. | |
Menambahkan atau mengurangi sejumlah hari dari nilai tanggal berdasarkan interval yang ditentukan oleh delta. Hanya perubahan berdasarkan hari yang didukung. Fungsi DATE_ADD merupakan 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 dari nilai tanggal berdasarkan interval yang ditentukan oleh delta. Fungsi DATE_SUB merupakan kebalikan dari fungsi | |
Menghitung selisih antara dua nilai tanggal berdasarkan unit waktu yang ditentukan oleh datepart. | |
Mengembalikan komponen tertentu dari nilai tanggal berdasarkan unit waktu yang ditentukan oleh datepart. | |
Memotong nilai tanggal berdasarkan unit waktu yang ditentukan oleh datepart. | |
Mengembalikan hari dari nilai tanggal. | |
Mengembalikan komponen hari dari nilai tanggal. | |
Mengembalikan hari dalam seminggu dari nilai tanggal. | |
Mengembalikan bilangan bulat yang merepresentasikan urutan hari dalam tahun tersebut. | |
Mengembalikan komponen tertentu dari timestamp. | |
Mengonversi Stempel waktu UNIX bertipe BIGINT menjadi nilai tanggal bertipe DATETIME. | |
Mengonversi timestamp UTC menjadi timestamp untuk zona waktu tertentu. | |
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 dalam bulan dari nilai tanggal. | |
Mengembalikan hari terakhir dalam bulan dari nilai tanggal. | |
Mengembalikan komponen menit dari nilai tanggal. | |
Mengembalikan bulan dari nilai tanggal. | |
Mengembalikan jumlah bulan antara nilai tanggal tertentu. | |
Mengembalikan tanggal hari kerja pertama yang jatuh setelah tanggal yang ditentukan dan sesuai dengan minggu tersebut. | |
Mengembalikan tanggal dan waktu sistem saat ini. | |
Mengembalikan kuartal dari nilai tanggal. | |
Mengembalikan komponen detik dari nilai tanggal. | |
Mengonversi nilai tanggal menjadi string dalam format tertentu. | |
Mengonversi string menjadi nilai tanggal dalam format tertentu. | |
Mengonversi nilai tanggal menjadi Stempel waktu UNIX yang akurat hingga milidetik. | |
Memotong data tanggal atau waktu sesuai dengan unit waktu datepart yang ditentukan, dan mengembalikan data bertipe STRING. | |
Mengonversi nilai tanggal menjadi Stempel waktu UNIX berupa bilangan bulat. | |
Mengembalikan angka yang merepresentasikan hari dalam seminggu dari nilai tanggal. | |
Mengembalikan angka yang merepresentasikan minggu dalam tahun dari nilai tanggal. | |
Mengembalikan tahun dari nilai tanggal. |
Catatan penggunaan
MaxCompute V2.0 menyediakan fungsi tambahan. Jika fungsi yang Anda gunakan melibatkan tipe data baru yang didukung di edisi tipe data MaxCompute V2.0, Anda harus menjalankan pernyataan SET untuk mengaktifkan edisi tersebut. Tipe data baru mencakup TINYINT, SMALLINT, INT, FLOAT, VARCHAR, TIMESTAMP, dan BINARY.
Tingkat sesi: Untuk menggunakan edisi tipe data MaxCompute V2.0, tambahkan
set odps.sql.type.system.odps2=true;sebelum pernyataan SQL yang ingin Anda jalankan, lalu kirim dan eksekusi bersama-sama.Tingkat proyek: Pemilik proyek dapat mengaktifkan edisi tipe data MaxCompute V2.0 untuk seluruh proyek sesuai kebutuhan. Konfigurasi akan berlaku dalam 10 hingga 15 menit. Untuk mengaktifkannya di 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 hal-hal yang perlu diperhatikan saat mengaktifkan edisi tipe data MaxCompute V2.0 di tingkat proyek, lihat Panduan versi tipe data.
Data sampel
Bagian ini menyediakan data sumber sampel agar Anda memahami cara menggunakan fungsi tanggal. Dalam topik ini, tabel bernama mf_date_fun_t dibuat dan data dimasukkan ke dalamnya. Contoh pernyataan:
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. Contoh pernyataan:
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
Sintaks
STRING ADD_MONTHS(DATE|DATETIME|TIMESTAMP|STRING <startdate>, INT <num_months>)Deskripsi
Mengembalikan nilai tanggal setelah jumlah bulan yang ditentukan oleh num_months ditambahkan ke startdate. Fungsi ini merupakan fungsi tambahan MaxCompute V2.0.
Parameter
Parameter
Required
Description
startdate
Yes
Nilai bertipe DATE, DATETIME, TIMESTAMP, atau STRING. Nilainya 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
Yes
Nilai bertipe INT.
Nilai kembali
Nilai bertipe STRING dikembalikan dalam format
yyyy-mm-dd. Nilai kembali mengikuti aturan berikut:Jika nilai startdate bukan bertipe DATE, DATETIME, TIMESTAMP, atau STRING atau formatnya tidak memenuhi persyaratan, null dikembalikan.
Jika nilai startdate adalah null, error 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
Tambahkan jumlah bulan tertentu ke tanggal dalam kolom date1, datetime1, timestamp1, dan date3. Data dalam Data sampel digunakan dalam contoh ini. Contoh pernyataan:
-- 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
Sintaks
TIMESTAMP CURRENT_TIMESTAMP()Deskripsi
Mengembalikan timestamp saat ini. Nilai kembali tidak tetap. Fungsi ini merupakan fungsi tambahan MaxCompute V2.0.
Nilai kembali
Nilai bertipe TIMESTAMP dikembalikan.
Contoh
-- Nilai kembali adalah '2017-08-03 11:50:30.661'. SET odps.sql.type.system.odps2=true; SELECT CURRENT_TIMESTAMP();
CURRENT_TIMEZONE
Sintaks
STRING CURRENT_TIMEZONE()Deskripsi
Mengembalikan zona waktu sistem saat ini.
Nilai kembali
Nilai bertipe STRING dikembalikan.
Contoh
-- Nilai kembali adalah Asia/Shanghai. SELECT CURRENT_TIMEZONE();
DATE_ADD
Sintaks
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 ke atau dari waktu saat ini, Anda dapat menggunakan fungsi ini dengan fungsi GETDATE.
Jika Anda perlu melakukan penyesuaian presisi pada tingkat jam, menit, atau detik, rujuk fungsi DATEADD. Fungsi ini hanya mendukung penambahan atau pengurangan satu unit saja di antara tahun, bulan, hari, jam, menit, atau detik. Jika Anda perlu menyesuaikan beberapa granularitas secara bersamaan, disarankan menggunakan user-defined function.
Logika fungsi ini berlawanan dengan fungsi DATE_SUB.
Parameter
Parameter
Required
Description
startdate
Yes
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 secara implisit menjadi tipe DATE sebelum perhitungan. Nilai input bertipe STRING harus mencakup setidaknya bagian
'yyyy-mm-dd', seperti'2019-12-27'.delta
Yes
Jumlah hari yang ingin Anda tambahkan atau kurangi. Nilai parameter ini harus bertipe BIGINT. Jika nilai delta lebih besar dari 0, sejumlah hari ditambahkan ke tanggal awal. Jika nilai delta kurang dari 0, sejumlah hari dikurangi dari tanggal awal. Jika nilai delta adalah 0, nilai tanggal tetap tidak berubah.
Nilai kembali
Nilai bertipe DATE dikembalikan dalam format
yyyy-mm-dd. Nilai kembali mengikuti aturan berikut:Jika nilai startdate bukan bertipe DATE, DATETIME, atau STRING, error dikembalikan.
Jika nilai startdate adalah null, error dikembalikan.
Jika nilai delta adalah null, null dikembalikan.
Contoh
Contoh data statis
-- Nilai kembali adalah 2005-03-01. Setelah satu hari ditambahkan, hasilnya melebihi 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 dalam kolom date1, datetime1, dan timestamp1 berdasarkan jumlah hari yang ditentukan oleh delta. Data dalam Data sampel digunakan dalam contoh ini. Contoh pernyataan:
-- Aktifkan edisi tipe data MaxCompute V2.0. Kirim 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
Sintaks
DATE|DATETIME DATEADD(DATE|DATETIME|TIMESTAMP <date>, BIGINT <delta>, STRING <datepart>)Deskripsi
Mengubah nilai date 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
Required
Description
date
Yes
Nilai tanggal bertipe DATE, DATETIME, atau TIMESTAMP. Nilai bertipe STRING akan dikonversi secara implisit 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
Yes
Interval yang ingin Anda tambahkan ke atau kurangi dari komponen tanggal tertentu. Nilai parameter ini harus bertipe BIGINT. Jika nilai delta lebih besar dari 0, interval ditambahkan ke nilai tanggal. Jika tidak, interval dikurangi dari nilai tanggal. Jika nilai input bertipe STRING atau DOUBLE, nilai tersebut akan dikonversi secara implisit 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 bilangan 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, pertahankan nilai komponen hari. Jika tidak, atur nilai komponen hari ke hari terakhir bulan yang ditentukan.
datepart
Yes
Bagian tanggal yang ingin Anda modifikasi dalam nilai tanggal. Nilainya adalah konstanta bertipe STRING. Jika format nilai input tidak valid atau nilai input bukan konstanta bertipe STRING, error 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 data. Format Tanggal/Waktu Diperluas (EDTF) juga didukung, seperti-year,-month,-mon,-day, atau-hour.Nilai kembali
Nilai bertipe DATE atau DATETIME dikembalikan dalam format
yyyy-mm-ddatauyyyy-mm-dd hh:mi:ss. Nilai kembali mengikuti aturan berikut:Jika nilai date bukan bertipe DATE, DATETIME, atau TIMESTAMP, error dikembalikan.
Jika nilai date adalah null, error 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 overflow, dan nilai tahun meningkat 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 dengan nilai bertipe DATETIME 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 menyatakan konstanta bertipe DATETIME, gunakan ekspresi valid 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, error 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 dalam 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. Contoh pernyataan:
-- 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
Sintaks
STRING DATE_FORMAT(DATE|TIMESTAMP|STRING <date>, STRING <format>)Deskripsi
Mengonversi nilai date menjadi string dalam format tertentu.
Parameter
Parameter
Required
Description
date
Yes
Nilai tanggal yang ingin Anda konversi. Nilai tanggal dapat bertipe DATE, TIMESTAMP, atau STRING.
Nilai tanggal bertipe DATE atau STRING hanya didukung ketika edisi tipe data Hive-compatible diaktifkan. Anda dapat menjalankan perintah
set odps.sql.hive.compatible=true;untuk mengaktifkan edisi tipe data Hive-compatible.Jika nilai tanggal bertipe 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
Yes
Konstanta bertipe STRING. format menentukan format tanggal, seperti
yyyy-MM-dd hh:mm:ss:SSSdanyyyy-MM-dd hh:mi:ss:SSS. Nilainya terdiri dari komponen berikut:YYYYatauyyyy: tahun. yyyy merepresentasikan tahun kalender dan YYYY merepresentasikan tahun dalam minggu.CatatanTahun dalam minggu mungkin tidak konsisten dengan tahun aktual. Berhati-hatilah saat menggunakan format tahun dalam minggu.
MM: bulan.mm: menit.dd: hari.HH: jam yang dinyatakan dalam format 24 jam.hh: jam yang dinyatakan dalam format 12 jam.mi: menit.ss: detik.SSS: milidetik.
PentingJika edisi tipe data Hive-compatible dinonaktifkan, baik
HHmaupunhhmenunjukkan bahwa format 24 jam digunakan. Dalam kasus 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 Hive-compatible diaktifkan,
HHmenunjukkan bahwa format 24 jam digunakan, danhhmenunjukkan bahwa format 12 jam digunakan. Dalam kasus ini, format tanggal harusyyyy-MM-dd hh:mm:ss. Jikayyyy-MM-dd hh:mi:ssdigunakan, null dikembalikan.
Nilai kembali
Nilai bertipe STRING dikembalikan. Nilai kembali mengikuti aturan berikut:
Jika nilai date bukan bertipe DATE atau TIMESTAMP, null dikembalikan.
Jika nilai date adalah null, error dikembalikan.
Jika nilai format adalah null, null dikembalikan.
Contoh
Contoh data statis
-- Aktifkan edisi tipe data Hive-compatible. Kirim pernyataan SET berikut bersama dengan pernyataan SQL. SET odps.sql.hive.compatible=true; -- Jika waktu saat ini adalah 2022-04-24 15:49, nilai kembali 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 kembali adalah 2022-04-24. SELECT DATE_FORMAT('2022-04-24','yyyy-MM-dd');Contoh data tabel
Konversi nilai tanggal dalam kolom datetime1 dan timestamp1 menjadi string dalam format tertentu. Data dalam Data sampel digunakan dalam contoh ini. Contoh pernyataan:
-- Aktifkan edisi tipe data Hive-compatible dan edisi tipe data MaxCompute V2.0. Kirim 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
Sintaks
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 presisi pada tingkat jam, menit, atau detik, rujuk fungsi DATEADD. Fungsi ini hanya mendukung penambahan atau pengurangan satu unit saja di antara tahun, bulan, hari, jam, menit, atau detik. Jika Anda perlu menyesuaikan beberapa granularitas secara bersamaan, disarankan menggunakan user-defined function.
Logika fungsi ini berlawanan dengan fungsi DATE_ADD.
Parameter
Parameter
Required
Description
startdate
Yes
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 secara implisit menjadi tipe DATE sebelum perhitungan. Nilai input bertipe STRING harus mencakup setidaknya bagian
'yyyy-mm-dd', seperti'2019-12-27'.delta
Yes
Jumlah hari yang ingin Anda tambahkan atau kurangi. Nilai parameter ini harus bertipe BIGINT. Jika nilai delta lebih besar dari 0, sejumlah hari dikurangi dari tanggal awal. Jika nilai delta kurang dari 0, sejumlah hari ditambahkan ke tanggal awal. Jika nilai delta adalah 0, nilai tanggal tetap tidak berubah.
Nilai kembali
Nilai bertipe DATE dikembalikan dalam format
yyyy-mm-dd. Nilai kembali mengikuti aturan berikut:Jika nilai startdate bukan bertipe DATE, DATETIME, atau STRING, error dikembalikan.
Jika nilai startdate adalah null, error dikembalikan.
Jika nilai delta adalah null, null 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; -- 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 dalam kolom date1, datetime1, dan timestamp1 berdasarkan jumlah hari yang ditentukan oleh delta. Data dalam Data sampel digunakan dalam contoh ini. Contoh pernyataan:
-- Aktifkan edisi tipe data MaxCompute V2.0. Kirim 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
Sintaks
BIGINT DATEDIFF(DATE|DATETIME|TIMESTAMP <date1>, DATE|DATETIME|TIMESTAMP <date2>, STRING <datepart>)Deskripsi
Menghitung selisih antara date1 dan date2 dalam unit waktu yang ditentukan oleh datepart.
Parameter
Parameter
Required
Description
date1 dan date2
Yes
Nilai bertipe DATE, DATETIME, atau TIMESTAMP. Parameter menentukan minuend dan subtrahend. 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.
CatatanHanya edisi tipe data MaxCompute V2.0 yang mendukung tipe TIMESTAMP. Untuk informasi lebih lanjut, lihat Versi tipe data 2.0.
datepart
No
Unit waktu, yaitu konstanta bertipe STRING.
Jika Anda mengaktifkan edisi tipe data MaxCompute V2.0, Anda dapat mengosongkan datepart. Nilai default: day. Untuk informasi lebih lanjut tentang edisi tipe data MaxCompute V2.0, lihat Panduan versi tipe data. EDTF juga didukung, seperti
-year,-month,-mon,-day, atau-hour.CatatanFungsi ini mengabaikan unit yang lebih rendah berdasarkan unit waktu yang ditentukan oleh datepart lalu menghitung hasilnya.
Nilai kembali
Nilai bertipe BIGINT dikembalikan. Nilai kembali mengikuti aturan berikut:
Jika nilai date1 atau date2 bukan bertipe DATE, DATETIME, atau TIMESTAMP, error dikembalikan.
Jika date1 lebih kecil dari date2, nilai kembali negatif.
Jika nilai date1 atau date2 adalah null, null dikembalikan.
Jika nilai datepart adalah null, null 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 kasus 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 selisih antara nilai dalam kolom date1 dan date2, antara nilai dalam kolom datetime1 dan datetime2, serta antara nilai dalam kolom timestamp1 dan timestamp2 dalam unit waktu tertentu. Data dalam Data sampel digunakan dalam contoh ini. Contoh pernyataan:
-- Aktifkan edisi tipe data MaxCompute V2.0. Kirim 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
Sintaks
BIGINT DATEPART(DATE|DATETIME|TIMESTAMP <date>, STRING <datepart>)Deskripsi
Mengembalikan komponen tertentu dari nilai date berdasarkan unit waktu yang ditentukan oleh datepart.
Parameter
Parameter
Required
Description
date
Yes
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
Yes
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 data. EDTF juga didukung, seperti-year,-month,-mon,-day, atau-hour.Nilai kembali
Nilai bertipe BIGINT dikembalikan. Nilai kembali mengikuti aturan berikut:
Jika nilai date bukan bertipe DATE, DATETIME, atau TIMESTAMP, error dikembalikan.
Jika nilai date adalah null, error dikembalikan.
Jika nilai datepart adalah null, null dikembalikan.
Contoh
Contoh data statis
-- Nilai kembali adalah 2013. SELECT DATEPART(DATETIME '2013-06-08 01:10:00', 'yyyy'); -- Nilai kembali adalah 6. SELECT DATEPART(DATETIME '2013-06-08 01:10:00', 'mm'); -- Nilai kembali adalah 2013. SELECT DATEPART(DATE '2013-06-08', 'yyyy'); -- Aktifkan edisi tipe data MaxCompute V2.0. Kirim pernyataan SET berikut bersama dengan pernyataan SQL. Nilai kembali adalah 2013. SET odps.sql.type.system.odps2=true; SELECT DATEPART(TIMESTAMP '2013-06-08 01:10:00', 'yyyy'); -- Nilai kembali adalah 2013. SET odps.sql.type.system.odps2=false; SELECT DATEPART('2013-06-08 01:10:00', 'yyyy'); -- Nilai kembali adalah NULL. SELECT DATEPART(DATE '2013-06-08', null);Contoh data tabel
Ekstrak komponen tanggal dari kolom date1, datetime1, dan timestamp1 berdasarkan unit waktu yang ditentukan oleh datepart. Data dalam Data sampel digunakan dalam contoh ini. Contoh pernyataan:
-- Aktifkan edisi tipe data MaxCompute V2.0. Kirim 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
Sintaks
DATE|DATETIME DATETRUNC(DATE|DATETIME|TIMESTAMP <date>, STRING <datepart>)Deskripsi
Memotong nilai date berdasarkan unit waktu yang ditentukan oleh datepart.
Parameter
Parameter
Required
Description
date
Yes
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
Yes
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 data. EDTF juga didukung, seperti-year,-month,-mon,-day, atau-hour.Nilai kembali
Nilai bertipe DATE atau DATETIME dikembalikan dalam format
yyyy-mm-ddatauyyyy-mm-dd hh:mi:ss. Nilai kembali mengikuti aturan berikut:Jika nilai date bukan bertipe DATE, DATETIME, atau TIMESTAMP, error dikembalikan.
Jika nilai date adalah null, error dikembalikan.
Jika nilai datepart adalah null, null dikembalikan.
Contoh
Contoh data statis
-- Nilai kembali adalah 2011-01-01 00:00:00. SELECT DATETRUNC(DATETIME '2011-12-07 16:28:46', 'yyyy'); -- Nilai kembali adalah 2011-12-01 00:00:00. SELECT DATETRUNC(DATETIME'2011-12-07 16:28:46', 'month'); -- Nilai kembali adalah 2011-12-07 00:00:00. SELECT DATETRUNC(DATETIME'2011-12-07 16:28:46', 'DD'); -- Nilai kembali 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 kembali 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 kembali 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 kembali adalah NULL. SELECT DATETRUNC(DATE '2011-12-07', null);Contoh data tabel
Potong nilai tanggal dalam kolom date1, datetime1, dan timestamp1 berdasarkan unit waktu yang ditentukan oleh datepart. Data dalam Data sampel digunakan dalam contoh ini. Contoh pernyataan:
-- 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 | +------------+-----------------+---------------------+---------------------+-------------------------------+----------------------+
DAY
Sintaks
INT DAY(DATETIME|TIMESTAMP|DATE|STRING <date>)Deskripsi
Mengembalikan hari dari nilai tanggal. Fungsi ini merupakan fungsi tambahan MaxCompute V2.0.
Parameter
date: wajib. Nilai tanggal bertipe DATETIME, TIMESTAMP, DATE, atau STRING 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 mengikuti 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 DAY('2014-09-01'); -- Nilai kembali adalah NULL. SELECT DAY('20140901'); -- Nilai kembali adalah NULL. SELECT DAY(null);Contoh data tabel
Ambil hari dari setiap nilai tanggal dalam kolom date1, datetime1, timestamp1, dan date3. Data dalam Data sampel digunakan dalam contoh ini. Contoh pernyataan:
-- Aktifkan edisi tipe data MaxCompute V2.0. Kirim 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
Sintaks
INT DAYOFMONTH(DATETIME|TIMESTAMP|DATE|STRING <date>)Deskripsi
Mengembalikan komponen hari dari nilai tanggal. Fungsi ini merupakan fungsi tambahan MaxCompute V2.0.
Parameter
date: wajib. Nilai tanggal bertipe DATETIME, TIMESTAMP, DATE, atau STRING 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 mengikuti 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
Ambil komponen hari dari nilai tanggal dalam kolom date1, datetime1, timestamp1, dan date3. Data dalam Data sampel digunakan dalam contoh ini. Contoh pernyataan:
-- 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
Sintaks
INT DAYOFWEEK(DATETIME|TIMESTAMP|DATE|STRING <date>)Deskripsi
Mengembalikan hari dalam seminggu dari nilai tanggal. Fungsi ini merupakan fungsi tambahan MaxCompute V2.0.
Parameter
date: wajib. Nilai tanggal bertipe DATETIME, TIMESTAMP, DATE, atau STRING 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 mengikuti 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.
Nilai kembali berkisar dari 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
Sintaks
INT DAYOFYEAR(DATETIME|TIMESTAMP|DATE|STRING <date>)Deskripsi
Mengembalikan bilangan bulat yang merepresentasikan urutan hari dalam tahun tersebut. Fungsi ini merupakan fungsi tambahan MaxCompute V2.0.
Parameter
date: wajib. Nilai tanggal bertipe DATETIME, TIMESTAMP, DATE, atau STRING 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 mengikuti 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
-- Nilai kembali 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 fungsi tambahan MaxCompute V2.0.
Parameter
Parameter
Required
Description
datepart
Yes
Nilainya dapat berupa YEAR, MONTH, DAY, HOUR, MINUTE, atau SECOND.
date
Yes
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 mengikuti aturan berikut:
Jika nilai datepart bukan YEAR, MONTH, DAY, HOUR, MINUTE, atau SECOND, error dikembalikan.
Jika nilai datepart adalah null, error dikembalikan.
Jika nilai date bukan bertipe DATE, DATETIME, TIMESTAMP, atau STRING atau null, null 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
Ekstrak komponen tanggal tertentu dari nilai tanggal dalam kolom timestamp1. Data dalam Data sampel digunakan dalam contoh ini. Contoh pernyataan:
-- 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
Sintaks
DATETIME FROM_UNIXTIME(BIGINT <unixtime>)Deskripsi
Mengonversi unixtime bertipe BIGINT menjadi nilai tanggal bertipe DATETIME.
Parameter
unixtime: wajib. Nilai tanggal bertipe BIGINT dalam format UNIX, akurat hingga detik. Rentang nilai valid: [-62167305600, 253402387200].
CatatanJika nilai input bertipe STRING, DOUBLE, atau DECIMAL dan edisi tipe data MaxCompute V1.0 digunakan dalam proyek Anda, nilai input akan dikonversi secara implisit menjadi tipe BIGINT sebelum perhitungan.
Nilai kembali
Nilai bertipe DATETIME dikembalikan dalam format
yyyy-mm-dd hh:mi:ss. Jika nilai unixtime adalah null, null dikembalikan.CatatanAnda dapat menjalankan perintah
set odps.sql.hive.compatible=true;untuk mengaktifkan edisi tipe data Hive-compatible. Dalam edisi tersebut, berlaku aturan berikut:Jika nilai input bertipe STRING, nilai tanggal bertipe STRING dikembalikan.
Anda dapat menentukan parameter input kedua untuk menentukan format nilai kembali. Misalnya, Anda dapat menentukan format tanggal dan waktu seperti yyyy-MM-dd atau YYYY-MM-dd. yyyy merepresentasikan tahun kalender, sedangkan YYYY merepresentasikan tahun dalam minggu. Tahun dalam minggu mungkin tidak konsisten dengan tahun aktual, sehingga berhati-hatilah saat menggunakannya.
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
Konversi nilai dalam kolom date4 menjadi nilai tanggal. Data dalam Data sampel digunakan dalam contoh ini. Contoh pernyataan:
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 Coordinated Universal Time (UTC) menjadi zona waktu tertentu. Fungsi ini merupakan fungsi tambahan MaxCompute V2.0.
PentingNilai kembali fungsi FROM_UTC_TIMESTAMP juga dipengaruhi oleh nilai
odps.sql.timezoneyang dikonfigurasikan untuk proyek Anda. Jika Anda mengonfigurasiodps.sql.timezone=Asia/Shanghai, zona waktu UTC+8 digunakan, yaitu 8 jam lebih awal dari UTC. Dalam kasus ini, 8 jam ditambahkan ke hasil perhitungan fungsi FROM_UTC_TIMESTAMP. Misalnya, fungsiFROM_UTC_TIMESTAMP(0, 'Asia/Shanghai')mengonversi timestamp UTC+0 menjadi waktu Beijing (UTC+08:00), sehingga hasil perhitungannya adalah0 + 8 x 3600 = 28800. Namun, karena konfigurasiodps.sql.timezone=Asia/Shanghaimenambahkan offset 8 jam lagi, nilai kembali akhirnya menjadi1970-01-01 16:00:00.Parameter
Parameter
Required
Description
{any primitive type}*
Yes
Timestamp bertipe TIMESTAMP, DATETIME, TINYINT, SMALLINT, INT, atau BIGINT. Jika nilainya bertipe TINYINT, SMALLINT, INT, atau BIGINT, unit waktu akurat hingga milidetik.
timezone
Yes
Zona waktu baru.
CatatanAnda dapat mencari daftar zona waktu menggunakan mesin pencari.
Nilai kembali
Nilai bertipe TIMESTAMP dikembalikan dalam format
yyyy-mm-dd hh:mi:ss.ff3. Nilai kembali mengikuti aturan berikut:Jika nilai {any primitive type}* bukan bertipe TIMESTAMP, DATETIME, TINYINT, SMALLINT, INT, atau BIGINT, error dikembalikan.
Jika nilai {any primitive type}* adalah null, error dikembalikan.
Jika nilai timezone adalah null, null dikembalikan.
Contoh
Contoh data statis
-- Unit waktu nilai input akurat hingga milidetik dan nilai kembali adalah 2017-08-01 04:24:00.0. SELECT FROM_UTC_TIMESTAMP(1501557840000, 'PST'); -- Nilai kembali adalah 1970-01-30 08:00:00.0. SELECT FROM_UTC_TIMESTAMP('1970-01-30 16:00:00','PST'); -- Nilai kembali adalah 1970-01-29 16:00:00.0. SELECT FROM_UTC_TIMESTAMP('1970-01-30','PST'); -- Aktifkan edisi tipe data MaxCompute V2.0. Kirim pernyataan SET berikut bersama dengan pernyataan SQL. Nilai kembali 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. Kirim pernyataan SET berikut bersama dengan pernyataan SQL. Nilai kembali 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 kembali adalah NULL. SELECT FROM_UTC_TIMESTAMP('1970-01-30',null);Contoh data tabel
Konversi nilai tanggal dalam kolom datetime1 dan timestamp1 menjadi timestamp dalam zona waktu tertentu. Data dalam Data sampel digunakan dalam contoh ini. Contoh pernyataan:
-- Aktifkan edisi tipe data MaxCompute V2.0. Kirim 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
Sintaks
DATETIME GETDATE()Deskripsi
Mengembalikan waktu sistem saat ini sebagai nilai tanggal. MaxCompute menggunakan UTC+8 sebagai zona waktu standar.
Nilai kembali
Tanggal dan waktu saat ini dikembalikan, bertipe DATETIME.
CatatanDalam SQL MaxCompute,
GETDATEselalu mengembalikan nilai tetap, yaitu waktu arbitrer selama eksekusi tugas SQL MaxCompute. Waktu akurat hingga detik. Jika Anda mengaktifkan edisi tipe data MaxCompute V2.0, waktu akurat hingga milidetik.
HOUR
Sintaks
INT HOUR(DATETIME|TIMESTAMP|STRING <date>)Deskripsi
Mengembalikan komponen jam dari nilai tanggal.
Parameter
date: wajib. Nilai tanggal bertipe DATETIME, TIMESTAMP, atau STRING 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 MaxCompute V2.0.Nilai kembali
Nilai bertipe INT dikembalikan. Nilai kembali mengikuti aturan berikut:
Jika nilai date bukan bertipe DATETIME, TIMESTAMP, atau STRING atau formatnya tidak memenuhi persyaratan, null dikembalikan.
Jika nilai date 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
Ambil komponen jam dari nilai tanggal dalam kolom datetime1 dan timestamp1. Data dalam Data sampel digunakan dalam contoh ini. Contoh pernyataan:
-- 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
Sintaks
BOOLEAN ISDATE(STRING <date>, STRING <format>)Deskripsi
Menentukan apakah string tanggal dapat dikonversi menjadi nilai tanggal dalam format tertentu. Jika dapat dikonversi, true dikembalikan; jika tidak, false dikembalikan.
Parameter
Parameter
Required
Description
date
Yes
Nilai bertipe STRING. Jika nilai input bertipe BIGINT, DOUBLE, DECIMAL, atau DATETIME, nilai tersebut akan dikonversi secara implisit menjadi nilai bertipe STRING sebelum perhitungan.
format
Yes
Konstanta bertipe STRING. Parameter ini tidak mendukung EDTF. Jika ada string format berlebihan dalam format, fungsi ini mengonversi string tanggal yang sesuai dengan string format pertama menjadi nilai tanggal. String sisanya dianggap sebagai pembatas. Misalnya,
isdate("1234-yyyy", "yyyy-yyyy")mengembalikan true.Nilai kembali
Nilai bertipe BOOLEAN dikembalikan. Jika nilai date atau format adalah null, null 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 dalam kolom date3 dapat dikonversi menjadi nilai tanggal dalam format tertentu. Data dalam Data sampel digunakan dalam contoh ini. Contoh pernyataan:
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
Sintaks
STRING LAST_DAY(DATE|DATETIME|TIMESTAMP|STRING <date>)Deskripsi
Mengembalikan hari terakhir dalam bulan dari nilai tanggal. Fungsi ini merupakan fungsi tambahan MaxCompute V2.0.
Parameter
date: wajib. Nilai tanggal bertipe 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 bertipe STRING dikembalikan dalam format
yyyy-mm-dd. Nilai kembali mengikuti aturan berikut:Jika nilai date bukan bertipe DATE, DATETIME, TIMESTAMP, atau STRING atau formatnya tidak memenuhi persyaratan, null dikembalikan.
Jika nilai date adalah null, error 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
Ambil hari terakhir dalam bulan dari setiap nilai tanggal dalam kolom date1, datetime1, timestamp1, dan date3. Data dalam Data sampel digunakan dalam contoh ini. Contoh pernyataan:
-- Aktifkan edisi tipe data MaxCompute V2.0. Kirim 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
Sintaks
DATETIME LASTDAY(DATETIME <date>)Deskripsi
Mengembalikan hari terakhir dalam bulan dari nilai date. Hanya komponen hari yang dipertahankan; komponen jam, menit, dan detik diatur menjadi
00:00:00.Parameter
date: nilai tanggal bertipe DATETIME dalam format
yyyy-mm-dd hh:mi:ss. 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.Nilai kembali
Nilai bertipe DATETIME dikembalikan dalam format
yyyy-mm-dd hh:mi:ss. Nilai kembali mengikuti aturan berikut:Jika nilai date bukan bertipe DATETIME atau STRING atau formatnya tidak memenuhi persyaratan, error dikembalikan.
Jika nilai date adalah null, null dikembalikan.
Contoh
Contoh data statis
-- Nilai kembali adalah 2013-06-30 00:00:00. SELECT LASTDAY (DATETIME '2013-06-08 01:10:00'); -- Nilai kembali adalah 2013-06-30 00:00:00. SET odps.sql.type.system.odps2=false; SELECT LASTDAY ('2013-06-08 01:10:00'); -- Nilai kembali adalah NULL. SELECT LASTDAY (null);Contoh data tabel
Ambil hari terakhir dalam bulan dari setiap nilai tanggal dalam kolom datetime1. Data dalam Data sampel digunakan dalam contoh ini. Contoh pernyataan:
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
Sintaks
INT MINUTE(DATETIME|TIMESTAMP|STRING <date>)Deskripsi
Mengembalikan komponen menit dari nilai tanggal. Fungsi ini merupakan fungsi tambahan MaxCompute V2.0.
Parameter
date: wajib. Nilai tanggal bertipe DATETIME, TIMESTAMP, atau STRING dalam format
yyyy-mm-dd hh:mi:ssatauyyyy-mm-dd hh:mi:ss.ff3.Nilai kembali
Nilai bertipe INT dikembalikan. Nilai kembali mengikuti aturan berikut:
Jika nilai date bukan bertipe DATETIME, TIMESTAMP, atau STRING atau formatnya tidak memenuhi persyaratan, null dikembalikan.
Jika nilai date adalah null, null dikembalikan.
Contoh
Contoh data statis
-- Nilai kembali adalah 30. SELECT MINUTE('2014-09-01 12:30:00'); -- Nilai kembali adalah 30. SELECT MINUTE('12:30:00'); -- Nilai kembali adalah NULL. SELECT MINUTE('20140901120000'); -- Nilai kembali adalah NULL. SELECT MINUTE(null);Contoh data tabel
Ambil komponen menit dari nilai tanggal dalam kolom datetime1 dan timestamp1. Data dalam Data sampel digunakan dalam contoh ini. Contoh pernyataan:
-- 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 | +---------------------+------------------+-------------------------------+-------------------+
MONTH
Sintaks
INT MONTH(DATETIME|TIMESTAMP|DATE|STRING <date>)Deskripsi
Mengembalikan bulan dari nilai tanggal. Fungsi ini merupakan fungsi tambahan MaxCompute V2.0.
Parameter
date: wajib. Nilai tanggal bertipe DATETIME, TIMESTAMP, DATE, atau STRING 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 mengikuti 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 kembali adalah 9. SELECT MONTH('2014-09-01'); -- Nilai kembali adalah NULL. SELECT MONTH('20140901'); -- Nilai kembali adalah NULL. SELECT MONTH(null);Contoh data tabel
Ambil komponen bulan dari setiap nilai tanggal dalam kolom date1, datetime1, timestamp1, dan date3. Data dalam Data sampel digunakan dalam contoh ini. Contoh pernyataan:
-- 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
Sintaks
DOUBLE MONTHS_BETWEEN(DATETIME|TIMESTAMP|DATE|STRING <date1>, DATETIME|TIMESTAMP|DATE|STRING <date2>)Deskripsi
Mengembalikan jumlah bulan antara date1 dan date2. Fungsi ini merupakan fungsi tambahan MaxCompute V2.0.
Parameter
date1 dan date2: wajib. Nilai bertipe DATETIME, TIMESTAMP, DATE, atau STRING 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 DOUBLE dikembalikan. Nilai kembali mengikuti aturan berikut:
Jika date1 lebih akhir dari date2, nilai positif dikembalikan. Jika date2 lebih akhir dari date1, nilai negatif dikembalikan.
Jika date1 dan date2 sesuai dengan hari terakhir dua bulan, nilai kembali adalah bilangan bulat yang merepresentasikan jumlah bulan. Jika tidak, nilai kembali dihitung menggunakan rumus: (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 dalam kolom timestamp1 dan timestamp2. Data dalam Data sampel digunakan dalam contoh ini. Contoh pernyataan:
-- Aktifkan edisi tipe data MaxCompute V2.0. Kirim 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
Sintaks
STRING NEXT_DAY(TIMESTAMP|DATE|DATETIME|STRING <startdate>, STRING <week>)Deskripsi
Mengembalikan tanggal hari pertama yang lebih akhir dari startdate dan sesuai dengan nilai week, yaitu tanggal hari tertentu pada minggu berikutnya. Fungsi ini merupakan fungsi tambahan MaxCompute V2.0.
Parameter
Parameter
Required
Description
startdate
Yes
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
Yes
Nilai bertipe STRING. Nilai parameter ini dapat berupa dua atau tiga huruf pertama hari dalam seminggu atau nama lengkap hari dalam seminggu, seperti MO, TUE, atau FRIDAY.
Nilai kembali
Nilai bertipe STRING dikembalikan dalam format
yyyy-mm-dd. Nilai kembali mengikuti aturan berikut:Jika nilai date bukan bertipe TIMESTAMP, DATE, DATETIME, atau STRING atau formatnya tidak memenuhi persyaratan, null dikembalikan.
Jika nilai date adalah null, error 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
Ambil tanggal hari pada minggu berikutnya yang sesuai dengan setiap nilai tanggal dalam kolom date1, datetime1, timestamp1, dan date3. Data dalam Data sampel digunakan dalam contoh ini. Contoh pernyataan:
-- 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
Sintaks
DATETIME NOW()Deskripsi
Mengembalikan tanggal dan waktu sistem saat ini.
Nilai kembali
Nilai bertipe DATETIME dikembalikan dalam format
yyyy-mm-dd hh:mi:ss.SSS.Contoh
Tidak ada format yang ditentukan. Bagian milidetik dalam nilai kembali mungkin 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
Sintaks
INT QUARTER(DATETIME|TIMESTAMP|DATE|STRING <date>)Deskripsi
Mengembalikan kuartal dari nilai tanggal. Nilai valid: 1 hingga 4. Fungsi ini merupakan fungsi tambahan MaxCompute V2.0.
Parameter
date: wajib. Nilai tanggal bertipe DATETIME, TIMESTAMP, DATE, atau STRING 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 mengikuti 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 kembali adalah 4. SELECT QUARTER('1970-11-12 10:00:00'); -- Nilai kembali adalah 4. SELECT QUARTER('1970-11-12'); -- Nilai kembali adalah NULL. SELECT QUARTER(null);Contoh data tabel
Ambil kuartal dari setiap nilai tanggal dalam kolom date1, datetime1, timestamp1, dan date3. Data dalam Data sampel digunakan dalam contoh ini. Contoh pernyataan:
-- Aktifkan edisi tipe data MaxCompute V2.0. Kirim 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 | +------------+---------------+---------------------+-------------------+-------------------------------+--------------------+------------+---------------+
SECOND
Sintaks
INT SECOND(DATETIME|TIMESTAMP|STRING <date>)Deskripsi
Mengembalikan komponen detik dari nilai tanggal. Fungsi ini merupakan fungsi tambahan dalam MaxCompute 2.0.
Parameter
date: wajib. Nilai tanggal bertipe DATETIME, TIMESTAMP, atau STRING dalam format
yyyy-mm-dd hh:mi:ssatauyyyy-mm-dd hh:mi:ss.ff3.Nilai kembali
Nilai bertipe INT dikembalikan. Nilai kembali mengikuti aturan berikut:
Jika nilai date bukan bertipe DATETIME, TIMESTAMP, atau STRING atau formatnya tidak memenuhi persyaratan, null dikembalikan.
Jika nilai 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
Ambil komponen detik dari nilai tanggal dalam kolom datetime1 dan timestamp1. Data dalam Data sampel digunakan dalam contoh ini. Contoh pernyataan:
-- 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
Sintaks
STRING TO_CHAR(DATETIME <date>, STRING <format>)Deskripsi
Mengonversi nilai date bertipe DATETIME menjadi string dalam format tertentu.
Parameter
Parameter
Required
Description
date
Yes
Nilai tanggal bertipe DATETIME. Nilai tanggal dalam format
yyyy-mm-dd hh:mi:ss. 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.format
Yes
Konstanta bertipe STRING. Dalam nilai format, bagian format tanggal diganti dengan data terkait dan karakter lain tetap tidak berubah dalam output.
Nilai kembali
Nilai bertipe STRING dikembalikan. Nilai kembali mengikuti aturan berikut:
Jika nilai date bukan bertipe DATETIME atau STRING, error dikembalikan.
Jika nilai date adalah null, error 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 error dikembalikan. SELECT TO_CHAR(DATETIME 'Alibaba 2010-12*3', 'Alibaba yyyy-mm*dd');Contoh 5
--'20102401' bukan nilai tanggal standar, dan error 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
Konversi nilai tanggal dalam kolom datetime1 menjadi string dalam format tertentu. Data dalam Data sampel digunakan dalam contoh ini. Contoh pernyataan:
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
Sintaks
DATETIME|DATE TO_DATE(STRING <date>[, STRING <format>])Deskripsi
Mengonversi string menjadi nilai date dalam format tertentu.
Parameter
Parameter
Required
Description
date
Yes
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 menjadi nilai bertipe STRING sebelum perhitungan. String tanggal juga dapat dalam format ISO 8601.
format
No
Konstanta bertipe STRING. Parameter ini menentukan format tanggal. format tidak mendukung EDTF. Karakter lain diabaikan sebagai karakter tidak valid selama penguraian.
Nilai harus mengandung
yyyy. Jika tidak, NULL dikembalikan. Jika ada string format berlebihan dalam format, fungsi ini mengonversi string tanggal yang sesuai dengan string format pertama menjadi nilai tanggal. String sisanya dianggap sebagai pembatas. Misalnya,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 format 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 disertakan dan string yang perlu dikonversi berada dalam format yyyy-mm-dd atau
yyyy-mm-dd hh:mi:ss, nilai bertipe DATE dalam formatyyyy-mm-dddikembalikan. Jika parameter format tidak disertakan dan string tidak dalam format tersebut, null dikembalikan.Jika parameter format disertakan, nilai bertipe DATETIME dalam format
yyyy-mm-dd hh:mi:ssdikembalikan. Jika nilai date atau format adalah null, null 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 error dikembalikan. Nilai harus ditulis sebagai '20080718'. SELECT TO_DATE('2008718', 'yyyymmdd'); -- 'Alibaba 2010-12*3' tidak dapat dikonversi menjadi nilai tanggal standar, dan error 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 error 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 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
Konversi nilai tanggal pada kolom date3 ke format tanggal tertentu. Contoh ini menggunakan data dari Data sampel. Berikut adalah pernyataan contohnya:
SELECT date3, TO_DATE(date3, 'yyyy-mm-dd') AS date3_to_date FROM mf_date_fun_t;Hasil yang dikembalikan adalah sebagai berikut.
+------------+---------------------+ | 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
Sintaks
BIGINT TO_MILLIS(DATETIME|TIMESTAMP <date>);Deskripsi
Mengonversi nilai date menjadi Stempel waktu UNIX yang akurat hingga milidetik. Fungsi ini merupakan fungsi tambahan MaxCompute V2.0.
Parameter
date: wajib. Nilai tanggal bertipe DATETIME atau TIMESTAMP dalam format
yyyy-mm-dd hh:mi:ssatauyyyy-mm-dd hh:mi:ss.ff3.Nilai kembali
Nilai bertipe BIGINT dikembalikan. Nilai kembali mengikuti aturan berikut:
Jika nilai date bukan bertipe DATETIME atau TIMESTAMP, error dikembalikan.
Jika nilai date adalah null, error 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
Konversi nilai tanggal dalam kolom datetime1 dan timestamp1 menjadi Stempel waktu UNIX yang akurat hingga milidetik. Data dalam Data sampel digunakan dalam contoh ini. Contoh pernyataan:
-- 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 bertipe tanggal atau waktu sesuai dengan unit waktu yang ditentukan oleh datepart dan mengembalikan data bertipe STRING.
Parameter
date: Wajib. Mendukung tipe DATE, DATETIME, TIMESTAMP, atau TIMESTAMP_NTZ. Jika input bertipe STRING dan versi tipe data proyek MaxCompute adalah 1.0, akan dikonversi secara implisit ke tipe DATETIME sebelum perhitungan.
datepart: Wajib. Konstanta bertipe 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, error dikembalikan. Tipe STRING untuk date hanya didukung ketika versi tipe data proyek MaxCompute adalah 1.0.
Ketika datepart adalah NULL, error dikembalikan.
Contoh
Waktu sebagai tipe DATETIME
Misalnya, ketika zona waktu Session atau Proyek saat ini adalah UTC+8, waktu lokal adalah datetime '2025-06-03 07:15:08', fungsi TRUNC_TIME pertama-tama mengonversi waktu lokal ke waktu UTC '2025-06-02 23:15:08', lalu memotong sesuai datepart, dan mengembalikan hasil 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
Misalnya, waktu input adalah date '2025-06-10', fungsi TRUNC_TIME memotong data bertipe 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
Misalnya, waktu input adalah tipe STRING '2025-06-03 15:30:30'. Anda harus mengatur versi tipe data proyek MaxCompute ke 1.0 agar dikonversi secara implisit ke tipe DATETIME sebelum perhitungan. Jika tidak, error 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
Sintaks
BIGINT UNIX_TIMESTAMP(DATETIME|DATE|TIMESTAMP|STRING <date>)Deskripsi
Mengonversi nilai date menjadi Stempel waktu UNIX berupa bilangan bulat.
Parameter
date: wajib. Nilai tanggal bertipe DATETIME, DATE, TIMESTAMP, atau STRING dalam format
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 dalam proyek Anda, nilai input akan dikonversi secara implisit menjadi nilai bertipe DATETIME sebelum perhitungan. Untuk informasi lebih lanjut tentang edisi tipe data MaxCompute V1.0, lihat Versi tipe data 1.0. Jika Anda mengaktifkan edisi tipe data MaxCompute V2.0, konversi implisit gagal. Dalam kasus ini, Anda harus menggunakan 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 Versi tipe data 2.0.CatatanJika nilai input adalah konstanta dan bukan nilai dalam tabel, nilai input 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 tipe data dan dalam format'yyyy-mm-dd hh:mi:ss', nilai input dikenali sebagai nilai bertipe STRING.Nilai kembali
Stempel waktu UNIX bertipe BIGINT dikembalikan. Nilai kembali mengikuti aturan berikut:
Jika nilai date bukan bertipe DATETIME, DATE, TIMESTAMP, atau STRING atau formatnya tidak memenuhi persyaratan, error atau null dikembalikan.
Jika nilai date adalah null, null dikembalikan.
Contoh
Contoh data statis
-- Nilai kembali adalah 1699585860. SELECT UNIX_TIMESTAMP(DATETIME'2023-11-10 11:11:00'); -- Nilai kembali adalah 1699545600. SET odps.sql.type.system.odps2=true; SELECT UNIX_TIMESTAMP(DATE'2023-11-10'); -- Nilai kembali adalah 1699585860. SET odps.sql.type.system.odps2=true; SELECT UNIX_TIMESTAMP(TIMESTAMP'2023-11-10 11:11:00.123456789'); -- Nilai kembali adalah 1237518660. SET odps.sql.type.system.odps2=false; SELECT UNIX_TIMESTAMP('2009-03-20 11:11:00'); -- Nilai kembali adalah NULL. SELECT UNIX_TIMESTAMP(null);Contoh data tabel
Konversi nilai tanggal dalam kolom date1, datetime1, dan timestamp1 menjadi Stempel waktu UNIX berupa bilangan bulat. Data dalam Data sampel digunakan dalam contoh ini. Contoh pernyataan:
-- Aktifkan edisi tipe data MaxCompute V2.0. Kirim 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
Sintaks
BIGINT WEEKDAY(DATETIME <date>)Deskripsi
Mengembalikan angka yang merepresentasikan hari dalam seminggu dari nilai date.
Parameter
date: wajib. Nilai bertipe DATETIME dalam format
yyyy-mm-dd hh:mi:ss. 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.Nilai kembali
Nilai bertipe BIGINT dikembalikan. Nilai kembali mengikuti aturan berikut:
Senin dianggap sebagai hari pertama dalam seminggu dan nilai kembalinya adalah 0. Hari dalam seminggu dinomori secara berurutan mulai dari 0. Nilai kembali Minggu adalah 6.
Jika nilai date bukan bertipe DATETIME atau STRING atau formatnya tidak memenuhi persyaratan, error dikembalikan.
Jika nilai date adalah null, null 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 dari setiap nilai tanggal dalam kolom datetime1. Data dalam Data sampel digunakan dalam contoh ini. Contoh pernyataan:
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
Sintaks
BIGINT WEEKOFYEAR(DATETIME <date>)Deskripsi
Mengembalikan angka yang merepresentasikan minggu dalam tahun dari nilai tanggal. Senin dianggap sebagai hari pertama dalam minggu.
CatatanUntuk menentukan apakah suatu minggu termasuk dalam tahun ini atau tahun depan, cari tahun tempat lebih dari empat hari dalam minggu tersebut jatuh. Jika minggu tersebut termasuk dalam tahun ini, minggu tersebut dianggap sebagai minggu terakhir tahun ini. Jika minggu tersebut termasuk dalam tahun depan, minggu tersebut dianggap sebagai minggu pertama tahun depan.
Parameter
date: wajib. Nilai bertipe DATETIME dalam format
yyyy-mm-dd hh:mi:ss. 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.Nilai kembali
Nilai bertipe BIGINT dikembalikan. Nilai kembali mengikuti aturan berikut:
Jika nilai date bukan bertipe DATETIME atau STRING atau formatnya tidak memenuhi persyaratan, null dikembalikan.
Jika nilai date 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 kembali 1 menunjukkan minggu pertama tahun 2015. SELECT WEEKOFYEAR(TO_DATE("20141229", "yyyymmdd")); -- Nilai kembali adalah 1. SELECT WEEKOFYEAR(TO_DATE("20141231", "yyyymmdd")); -- Nilai kembali adalah 53. SELECT WEEKOFYEAR(TO_DATE("20151229", "yyyymmdd")); -- Nilai kembali adalah 48. SET odps.sql.type.system.odps2=false; SELECT WEEKOFYEAR('2021-11-29 00:01:00'); -- Nilai kembali adalah NULL. SELECT WEEKOFYEAR('20141231'); -- Nilai kembali adalah NULL. SELECT WEEKOFYEAR(null);Contoh data tabel
Hitung minggu ke-n dalam tahun dari setiap tanggal dalam kolom datetime1. Data dalam Data sampel digunakan dalam contoh ini. Contoh pernyataan:
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 | +---------------------+----------------------+
YEAR
Sintaks
INT YEAR(DATETIME|TIMESTAMP|DATE|STRING <date>)Deskripsi
Mengembalikan tahun dari nilai date. Fungsi ini merupakan fungsi tambahan MaxCompute V2.0.
Parameter
date: wajib. Nilai tanggal bertipe DATETIME, TIMESTAMP, DATE, atau STRING 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 mengikuti 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 kembali adalah 1970. SELECT YEAR('1970-01-01 12:30:00'); -- Nilai kembali adalah 1970. SELECT YEAR('1970-01-01'); -- Nilai kembali adalah 70. SELECT YEAR('70-01-01'); -- Nilai kembali adalah NULL. SELECT YEAR('1970/03/09'); -- Nilai kembali adalah NULL. SELECT YEAR(null);Contoh data tabel
Ambil tahun dari setiap nilai tanggal dalam kolom date1, datetime1, timestamp1, dan date3. Data dalam Data sampel digunakan dalam contoh ini. Contoh pernyataan:
-- 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 di atas tidak memenuhi kebutuhan bisnis Anda, MaxCompute juga mendukung user-defined function (UDF). Untuk informasi lebih lanjut tentang UDF, lihat Ikhtisar.
Untuk informasi lebih lanjut tentang FAQ SQL MaxCompute, lihat topik berikut:
Untuk informasi lebih lanjut tentang kesalahan umum dan FAQ fungsi bawaan MaxCompute, lihat topik berikut: