全部产品
Search
文档中心

MaxCompute:Fungsi tanggal

更新时间:Nov 05, 2025

Topik ini menjelaskan sintaks dan parameter dari fungsi tanggal yang didukung oleh MaxCompute. Topik ini juga memberikan contoh penggunaan fungsi tersebut. Anda dapat memilih fungsi yang sesuai untuk melakukan perhitungan atau konversi tanggal berdasarkan kebutuhan bisnis Anda.

Fungsi

Deskripsi

ADD_MONTHS

Mengembalikan nilai tanggal yang diperoleh setelah sejumlah bulan ditambahkan ke tanggal tertentu.

CURRENT_TIMESTAMP

Mengembalikan timestamp saat ini.

CURRENT_TIMEZONE

Mengembalikan zona waktu sistem saat ini.

DATE_ADD

Menambahkan atau mengurangi sejumlah hari ke atau dari nilai tanggal berdasarkan interval yang ditentukan oleh delta. Hanya mendukung perubahan berdasarkan hari. Fungsi DATE_ADD adalah kebalikan dari fungsi DATE_SUB.

DATEADD

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.

DATE_FORMAT

Mengonversi nilai tanggal menjadi string dalam format tertentu.

DATE_SUB

Menambahkan atau mengurangi sejumlah hari ke atau dari nilai tanggal berdasarkan interval yang ditentukan oleh delta. Fungsi DATE_SUB adalah kebalikan dari fungsi DATE_ADD.

DATEDIFF

Menghitung perbedaan antara dua nilai tanggal berdasarkan satuan waktu yang ditentukan oleh datepart.

DATEPART

Mengembalikan komponen tertentu dari nilai tanggal berdasarkan satuan waktu yang ditentukan oleh datepart.

DATETRUNC

Memotong nilai tanggal berdasarkan satuan waktu yang ditentukan oleh datepart.

HARI

Mengembalikan hari di mana nilai tanggal jatuh.

DAYOFMONTH

Mengembalikan komponen hari dari nilai tanggal.

DAYOFWEEK

Mengembalikan hari dalam seminggu di mana nilai tanggal jatuh.

DAYOFYEAR

Mengembalikan bilangan bulat yang mewakili hari berurutan dalam setahun.

EKSTRAK

Mengembalikan komponen tertentu dari cap waktu.

FROM_UNIXTIME

Mengonversi cap waktu UNIX tipe BIGINT menjadi nilai tanggal tipe DATETIME.

FROM_UTC_TIMESTAMP

Mengonversi cap waktu UTC menjadi cap waktu untuk zona waktu yang ditentukan.

GETDATE

Mengembalikan waktu sistem saat ini sebagai nilai tanggal.

JAM

Mengembalikan komponen jam dari nilai tanggal.

ISDATE

Menentukan apakah string tanggal dapat dikonversi menjadi nilai tanggal dalam format tertentu.

LAST_DAY

Mengembalikan hari terakhir dari bulan di mana nilai tanggal berada.

LASTDAY

Mengembalikan hari terakhir dari bulan di mana nilai tanggal berada.

MINUTE

Mengembalikan komponen menit dari nilai tanggal.

BULAN

Mengembalikan bulan di mana nilai tanggal jatuh.

MONTHS_BETWEEN

Mengembalikan jumlah bulan antara nilai tanggal yang ditentukan.

NEXT_DAY

Mengembalikan tanggal hari kerja pertama yang lebih lambat dari nilai tanggal dan sesuai dengan minggu yang ditentukan.

SEKARANG

Mengembalikan tanggal dan waktu sistem saat ini.

KUARTAL

Mengembalikan kuartal di mana nilai tanggal berada.

KEDUA

Mengembalikan komponen detik dari nilai tanggal.

TO_CHAR

Mengonversi nilai tanggal menjadi string dalam format yang ditentukan.

TO_DATE

Mengonversi string menjadi nilai tanggal dalam format tertentu.

TO_MILLIS

Mengonversi nilai tanggal menjadi cap waktu UNIX yang akurat hingga milidetik.

TRUNC_TIME

Memotong data tanggal atau waktu sesuai dengan unit waktu yang ditentukan oleh datepart, dan mengembalikan data tipe STRING.

UNIX_TIMESTAMP

Mengonversi nilai tanggal menjadi cap waktu UNIX yang merupakan bilangan bulat.

WEEKDAY

Mengembalikan angka yang mewakili hari dalam seminggu di mana nilai tanggal jatuh.

WEEKOFYEAR

Mengembalikan nomor yang mewakili minggu dalam setahun di mana nilai tanggal berada.

TAHUN

Mengembalikan tahun di mana nilai tanggal jatuh.

Catatan penggunaan

MaxCompute V2.0 menyediakan fungsi tambahan. Jika fungsi yang Anda gunakan melibatkan tipe data baru yang didukung dalam edisi tipe data MaxCompute V2.0, Anda harus mengeksekusi pernyataan SET untuk mengaktifkan edisi tipe data tersebut. Tipe data baru mencakup TINYINT, SMALLINT, INT, FLOAT, VARCHAR, TIMESTAMP, dan BINARY.

  • Tingkat sesi: Untuk menggunakan edisi tipe data MaxCompute V2.0, Anda harus menambahkan set odps.sql.type.system.odps2=true; sebelum pernyataan SQL yang ingin Anda eksekusi, lalu commit dan eksekusi bersama-sama.

  • Tingkat proyek: Pemilik proyek dapat mengaktifkan edisi tipe data MaxCompute V2.0 untuk proyek berdasarkan kebutuhan proyek. Konfigurasi akan berlaku setelah 10 hingga 15 menit. Untuk mengaktifkan edisi tipe data pada tingkat proyek, jalankan perintah berikut:

    setproject odps.sql.type.system.odps2=true; 

    Untuk informasi lebih lanjut tentang setproject, lihat Operasi Proyek. Untuk informasi lebih lanjut tentang tindakan pencegahan yang harus Anda ambil ketika mengaktifkan edisi tipe data MaxCompute V2.0 pada tingkat proyek, lihat Edisi Tipe Data.

Data sampel

Bagian ini menyediakan data sampel untuk membantu Anda memahami cara menggunakan fungsi tanggal. Dalam topik ini, sebuah tabel bernama mf_date_fun_t dibuat dan data dimasukkan ke dalam tabel tersebut. Pernyataan sampel:

CREATE TABLE IF NOT EXISTS mf_date_fun_t(
    id      INT,
    date1   DATE,
    datetime1   DATETIME,
    timestamp1 TIMESTAMP,
    date2   DATE,
    datetime2   DATETIME,
    timestamp2 TIMESTAMP,
    date3 STRING,
    date4 BIGINT);
    
INSERT INTO mf_date_fun_t VALUES 
(1,DATE'2021-11-29',DATETIME'2021-11-29 00:01:00',TIMESTAMP'2021-01-11 00:00:00.123456789',DATE'2021-10-29',DATETIME'2021-10-29 00:00:00',TIMESTAMP'2021-10-11 00:00:00.123456789','2021-11-20',123456780),
(2,DATE'2021-11-28',DATETIME'2021-11-28 00:02:00',TIMESTAMP'2021-02-11 00:00:00.123456789',DATE'2021-10-29',DATETIME'2021-10-29 00:00:00',TIMESTAMP'2021-10-11 00:00:00.123456789','2021-11-21',123456781),
(3,DATE'2021-11-27',DATETIME'2021-11-27 00:03:00',TIMESTAMP'2021-03-11 00:00:00.123456789',DATE'2021-10-29',DATETIME'2021-10-29 00:00:00',TIMESTAMP'2021-10-11 00:00:00.123456789','2021-11-22',123456782),
(4,DATE'2021-11-26',DATETIME'2021-11-26 00:04:00',TIMESTAMP'2021-04-11 00:00:00.123456789',DATE'2021-10-29',DATETIME'2021-10-29 00:00:00',TIMESTAMP'2021-10-11 00:00:00.123456789','2021-11-23',123456783),
(5,DATE'2021-11-25',DATETIME'2021-11-25 00:05:00',TIMESTAMP'2021-05-11 00:00:00.123456789',DATE'2021-10-29',DATETIME'2021-10-29 00:00:00',TIMESTAMP'2021-10-11 00:00:00.123456789','2021-11-24',123456784),
(6,DATE'2021-11-24',DATETIME'2021-11-24 00:06:00',TIMESTAMP'2021-06-11 00:00:00.123456789',DATE'2021-10-29',DATETIME'2021-10-29 00:00:00',TIMESTAMP'2021-10-11 00:00:00.123456789','2021-11-25',123456785),
(7,DATE'2021-11-23',DATETIME'2021-11-23 00:07:00',TIMESTAMP'2021-07-11 00:00:00.123456789',DATE'2021-10-29',DATETIME'2021-10-29 00:00:00',TIMESTAMP'2021-10-11 00:00:00.123456789','2021-11-26',123456786),
(8,DATE'2021-11-22',DATETIME'2021-11-22 00:08:00',TIMESTAMP'2021-08-11 00:00:00.123456789',DATE'2021-10-29',DATETIME'2021-10-29 00:00:00',TIMESTAMP'2021-10-11 00:00:00.123456789','2021-11-27',123456787),
(9,DATE'2021-11-21',DATETIME'2021-11-21 00:09:00',TIMESTAMP'2021-09-11 00:00:00.123456789',DATE'2021-10-29',DATETIME'2021-10-29 00:00:00',TIMESTAMP'2021-10-11 00:00:00.123456789','2021-11-28',123456788),
(10,DATE'2021-11-20',DATETIME'2021-11-20 00:10:00',TIMESTAMP'2021-10-11 00:00:00.123456789',DATE'2021-10-29',DATETIME'2021-10-29 00:00:00',TIMESTAMP'2021-10-11 00:00:00.123456789','2021-11-29',123456789);

Kueri data dari tabel mf_date_fun_t. Pernyataan sampel:

SELECT * FROM mf_date_fun_t;

Hasil berikut dikembalikan.

+------------+------------+---------------------+-------------------------+------------+---------------------+-------------------------+------------+------------+
| id         | date1      | datetime1           | timestamp1              | date2      | datetime2           | timestamp2              | date3      | date4      |
+------------+------------+---------------------+-------------------------+------------+---------------------+-------------------------+------------+------------+
| 1          | 2021-11-29 | 2021-11-29 00:01:00 | 2021-01-11 00:00:00.123 | 2021-10-29 | 2021-10-29 00:00:00 | 2021-10-11 00:00:00.123 | 2021-11-20 | 123456780  |
| 2          | 2021-11-28 | 2021-11-28 00:02:00 | 2021-02-11 00:00:00.123 | 2021-10-29 | 2021-10-29 00:00:00 | 2021-10-11 00:00:00.123 | 2021-11-21 | 123456781  |
| 3          | 2021-11-27 | 2021-11-27 00:03:00 | 2021-03-11 00:00:00.123 | 2021-10-29 | 2021-10-29 00:00:00 | 2021-10-11 00:00:00.123 | 2021-11-22 | 123456782  |
| 4          | 2021-11-26 | 2021-11-26 00:04:00 | 2021-04-11 00:00:00.123 | 2021-10-29 | 2021-10-29 00:00:00 | 2021-10-11 00:00:00.123 | 2021-11-23 | 123456783  |
| 5          | 2021-11-25 | 2021-11-25 00:05:00 | 2021-05-11 00:00:00.123 | 2021-10-29 | 2021-10-29 00:00:00 | 2021-10-11 00:00:00.123 | 2021-11-24 | 123456784  |
| 6          | 2021-11-24 | 2021-11-24 00:06:00 | 2021-06-11 00:00:00.123 | 2021-10-29 | 2021-10-29 00:00:00 | 2021-10-11 00:00:00.123 | 2021-11-25 | 123456785  |
| 7          | 2021-11-23 | 2021-11-23 00:07:00 | 2021-07-11 00:00:00.123 | 2021-10-29 | 2021-10-29 00:00:00 | 2021-10-11 00:00:00.123 | 2021-11-26 | 123456786  |
| 8          | 2021-11-22 | 2021-11-22 00:08:00 | 2021-08-11 00:00:00.123 | 2021-10-29 | 2021-10-29 00:00:00 | 2021-10-11 00:00:00.123 | 2021-11-27 | 123456787  |
| 9          | 2021-11-21 | 2021-11-21 00:09:00 | 2021-09-11 00:00:00.123 | 2021-10-29 | 2021-10-29 00:00:00 | 2021-10-11 00:00:00.123 | 2021-11-28 | 123456788  |
| 10         | 2021-11-20 | 2021-11-20 00:10:00 | 2021-10-11 00:00:00.123 | 2021-10-29 | 2021-10-29 00:00:00 | 2021-10-11 00:00:00.123 | 2021-11-29 | 123456789  |
+------------+------------+---------------------+-------------------------+------------+---------------------+-------------------------+------------+------------+

ADD_MONTHS

  • Sintaksis

    STRING ADD_MONTHS(DATE|DATETIME|TIMESTAMP|STRING <startdate>, INT <num_months>)
  • Deskripsi

    Mengembalikan nilai tanggal setelah sejumlah bulan yang ditentukan oleh num_months ditambahkan ke startdate. Fungsi ini merupakan bagian tambahan dari MaxCompute V2.0.

  • Parameter

    Parameter

    Diperlukan

    Deskripsi

    startdate

    Ya

    Nilai bertipe DATE, DATETIME, TIMESTAMP, atau STRING. Nilai tersebut dalam format yyyy-mm-dd, yyyy-mm-dd hh:mi:ss, atau yyyy-mm-dd hh:mi:ss.ff3. Jika nilainya bertipe STRING, nilai tersebut harus mencakup setidaknya bagian yyyy-mm-dd dan tidak boleh mengandung string tambahan.

    num_months

    Ya

    Nilai bertipe INT.

  • Nilai Kembali

    Nilai bertipe STRING dikembalikan. Nilai kembali dalam format yyyy-mm-dd. Nilai kembali bervariasi berdasarkan aturan berikut:

    • Jika nilai startdate bukan bertipe DATE, DATETIME, TIMESTAMP, atau STRING atau formatnya tidak memenuhi persyaratan, null dikembalikan.

    • Jika nilai startdate adalah null, kesalahan akan dikembalikan.

    • Jika nilai num_months adalah null, null dikembalikan.

  • Contoh

    • Contoh data statis

      -- Nilai kembali adalah 2017-05-14. 
      SELECT ADD_MONTHS('2017-02-14',3);
      
      -- Nilai kembali adalah 0017-05-14. 
      SELECT ADD_MONTHS('17-2-14',3);
      
      -- Nilai kembali adalah 2017-05-14. 
      SELECT ADD_MONTHS('2017-02-14 21:30:00',3);
      
      -- Nilai kembali adalah NULL. 
      SELECT ADD_MONTHS('20170214',3);
      
      -- Nilai kembali adalah NULL. 
      SELECT ADD_MONTHS('2017-02-14 21:30:00',null);
    • Contoh data tabel

      Konversikan nilai tanggal di kolom date1, datetime1, timestamp1, dan date3 menjadi cap waktu UNIX yang berupa bilangan bulat. Data dalam Data Contoh digunakan dalam contoh ini. Pernyataan sampel:

      -- Aktifkan edisi tipe data MaxCompute V2.0. Kirim pernyataan SET berikut bersama dengan pernyataan SQL. 
      SET odps.sql.type.system.odps2=true;
      SELECT date1, 
             ADD_MONTHS(date1,1) AS date1_add_months, 
             datetime1, 
             ADD_MONTHS(datetime1, 2) AS datetime1_add_months, 
             timestamp1, 
             ADD_MONTHS(timestamp1,3) AS timestamp1_add_months, 
             date3, 
             ADD_MONTHS(date3,4) AS date3_add_months 
      FROM mf_date_fun_t;

      Hasil berikut dikembalikan.

      +------------+------------------+---------------------+----------------------+-------------------------------+-----------------------+------------+------------------+
      | date1      | date1_add_months | datetime1           | datetime1_add_months | timestamp1                    | timestamp1_add_months | date3      | date3_add_months |
      +------------+------------------+---------------------+----------------------+-------------------------------+-----------------------+------------+------------------+
      | 2021-11-29 | 2021-12-29       | 2021-11-29 00:01:00 | 2022-01-29           | 2021-01-11 00:00:00.123456789 | 2021-04-11            | 2021-11-20 | 2022-03-20       |
      | 2021-11-28 | 2021-12-28       | 2021-11-28 00:02:00 | 2022-01-28           | 2021-02-11 00:00:00.123456789 | 2021-05-11            | 2021-11-21 | 2022-03-21       |
      | 2021-11-27 | 2021-12-27       | 2021-11-27 00:03:00 | 2022-01-27           | 2021-03-11 00:00:00.123456789 | 2021-06-11            | 2021-11-22 | 2022-03-22       |
      | 2021-11-26 | 2021-12-26       | 2021-11-26 00:04:00 | 2022-01-26           | 2021-04-11 00:00:00.123456789 | 2021-07-11            | 2021-11-23 | 2022-03-23       |
      | 2021-11-25 | 2021-12-25       | 2021-11-25 00:05:00 | 2022-01-25           | 2021-05-11 00:00:00.123456789 | 2021-08-11            | 2021-11-24 | 2022-03-24       |
      | 2021-11-24 | 2021-12-24       | 2021-11-24 00:06:00 | 2022-01-24           | 2021-06-11 00:00:00.123456789 | 2021-09-11            | 2021-11-25 | 2022-03-25       |
      | 2021-11-23 | 2021-12-23       | 2021-11-23 00:07:00 | 2022-01-23           | 2021-07-11 00:00:00.123456789 | 2021-10-11            | 2021-11-26 | 2022-03-26       |
      | 2021-11-22 | 2021-12-22       | 2021-11-22 00:08:00 | 2022-01-22           | 2021-08-11 00:00:00.123456789 | 2021-11-11            | 2021-11-27 | 2022-03-27       |
      | 2021-11-21 | 2021-12-21       | 2021-11-21 00:09:00 | 2022-01-21           | 2021-09-11 00:00:00.123456789 | 2021-12-11            | 2021-11-28 | 2022-03-28       |
      | 2021-11-20 | 2021-12-20       | 2021-11-20 00:10:00 | 2022-01-20           | 2021-10-11 00:00:00.123456789 | 2022-01-11            | 2021-11-29 | 2022-03-29       |
      +------------+------------------+---------------------+----------------------+-------------------------------+-----------------------+------------+------------------+

CURRENT_TIMESTAMP

  • Sintaksis

    TIMESTAMP CURRENT_TIMESTAMP()
  • Deskripsi

    Mengembalikan timestamp saat ini. Nilai yang dikembalikan tidak tetap. Fungsi ini merupakan bagian dari MaxCompute V2.0.

  • Nilai Pengembalian

    Nilai dengan tipe TIMESTAMP dikembalikan.

  • Contoh

    -- Nilai pengembalian adalah '2017-08-03 11:50:30.661'. 
    SET odps.sql.type.system.odps2=true;
    SELECT CURRENT_TIMESTAMP(); 

CURRENT_TIMEZONE

  • Sintaksis

    STRING CURRENT_TIMEZONE()
  • Deskripsi

    Mengembalikan zona waktu sistem saat ini.

  • Nilai Pengembalian

    Nilai dengan tipe STRING dikembalikan.

  • Contoh

    -- Nilai pengembalian adalah Asia/Shanghai. 
    SELECT CURRENT_TIMEZONE();

DATE_ADD

  • Sintaksis

    DATE DATE_ADD(DATE|TIMESTAMP|STRING <startdate>, BIGINT <delta>)
  • Deskripsi

    Menambahkan atau mengurangi sejumlah hari yang ditentukan oleh delta ke atau dari nilai tanggal yang ditentukan oleh startdate.

    Catatan
    • Untuk menambahkan atau mengurangi sejumlah hari dari waktu saat ini, Anda dapat menggunakan fungsi ini bersama dengan fungsi GETDATE.

    • Jika Anda perlu menyesuaikan tingkat jam, menit, atau detik secara tepat, lihat fungsi DATEADD. Fungsi ini hanya mendukung penambahan atau pengurangan satu unit waktu, seperti tahun, bulan, hari, jam, menit, atau detik. Untuk penyesuaian beberapa granularitas sekaligus, disarankan menggunakan fungsi yang didefinisikan pengguna.

    • Logika fungsi ini merupakan kebalikan dari fungsi DATE_SUB.

  • Parameter

    Parameter

    Diperlukan

    Deskripsi

    startdate

    Ya

    Tanggal awal. Nilai bertipe DATE, DATETIME, atau STRING didukung.

    Jika nilai masukan bertipe STRING dan edisi tipe data MaxCompute V1.0 digunakan dalam proyek Anda, nilai masukan akan dikonversi secara implisit menjadi tipe DATE sebelum perhitungan. Nilai masukan bertipe STRING harus mencakup setidaknya bagian 'yyyy-mm-dd', seperti '2019-12-27'.

    delta

    Ya

    Jumlah hari yang ingin Anda tambahkan atau kurangi. Nilai parameter ini harus bertipe BIGINT. Jika nilai delta lebih besar dari 0, sejumlah hari akan ditambahkan ke tanggal awal. Jika nilai delta kurang dari 0, sejumlah hari akan dikurangi dari tanggal awal. Jika nilai delta adalah 0, nilai tanggal tetap tidak berubah.

  • Nilai Kembali

    Nilai bertipe DATE dikembalikan. Nilai kembali dalam format yyyy-mm-dd. Nilai kembali bervariasi berdasarkan aturan berikut:

    • Jika nilai startdate bukan bertipe DATE, DATETIME, atau STRING, kesalahan akan dikembalikan.

    • Jika nilai startdate adalah null, sistem akan mengembalikan kesalahan.

    • Jika nilai delta adalah null, maka null akan dikembalikan.

  • Contoh

    • Contoh data statis

      -- Nilai kembali adalah 2005-03-01. Setelah satu hari ditambahkan, hasilnya melewati hari terakhir Februari. Hari pertama Maret dikembalikan. 
      SELECT DATE_ADD(DATETIME '2005-02-28 00:00:00', 1);
      
      -- Nilai kembali adalah 2005-02-27. Satu hari dikurangi. 
      SELECT DATE_ADD(DATE '2005-02-28', -1);
      
      -- Nilai kembali adalah 2005-03-20. 
      SET odps.sql.type.system.odps2=false; 
      SELECT DATE_ADD('2005-02-28 00:00:00', 20);
      
      -- Jika waktu saat ini adalah 2020-11-17 16:31:44, nilai kembali adalah 2020-11-16. 
      SELECT DATE_ADD(getdate(),-1);
      
      -- Nilai kembali adalah NULL. 
      SELECT DATE_ADD('2005-02-28 00:00:00', null);
    • Contoh data tabel

      Ubah nilai tanggal di kolom date1, datetime1, dan timestamp1 berdasarkan jumlah hari yang ditentukan oleh delta. Data dalam Data Sampel digunakan dalam contoh ini. Pernyataan sampel:

      -- Aktifkan edisi tipe data MaxCompute V2.0. Kirimkan pernyataan SET berikut bersama dengan pernyataan SQL. 
      SET odps.sql.type.system.odps2=true;
      SELECT date1, 
             DATE_ADD(date1, 1) AS date1_date_add, 
             datetime1, 
             DATE_ADD(datetime1, -1) AS datetime1_date_add, 
             timestamp1, 
             DATE_ADD(timestamp1, 0) AS timestamp1_date_add 
      FROM mf_date_fun_t;

      Hasil berikut dikembalikan.

      +------------+----------------+---------------------+-------------------+-------------------------------+--------------------+
      | date1      | date1_date_add | datetime1           | datetime1_date_add| timestamp1                    | timestamp1_date_add|
      +------------+----------------+---------------------+-------------------+-------------------------------+--------------------+
      | 2021-11-29 | 2021-11-30     | 2021-11-29 00:01:00 | 2021-11-28        | 2021-01-11 00:00:00.123456789 | 2021-01-11         |
      | 2021-11-28 | 2021-11-29     | 2021-11-28 00:02:00 | 2021-11-27        | 2021-02-11 00:00:00.123456789 | 2021-02-11         |
      | 2021-11-27 | 2021-11-28     | 2021-11-27 00:03:00 | 2021-11-26        | 2021-03-11 00:00:00.123456789 | 2021-03-11         |
      | 2021-11-26 | 2021-11-27     | 2021-11-26 00:04:00 | 2021-11-25        | 2021-04-11 00:00:00.123456789 | 2021-04-11         |
      | 2021-11-25 | 2021-11-26     | 2021-11-25 00:05:00 | 2021-11-24        | 2021-05-11 00:00:00.123456789 | 2021-05-11         |
      | 2021-11-24 | 2021-11-25     | 2021-11-24 00:06:00 | 2021-11-23        | 2021-06-11 00:00:00.123456789 | 2021-06-11         |
      | 2021-11-23 | 2021-11-24     | 2021-11-23 00:07:00 | 2021-11-22        | 2021-07-11 00:00:00.123456789 | 2021-07-11         |
      | 2021-11-22 | 2021-11-23     | 2021-11-22 00:08:00 | 2021-11-21        | 2021-08-11 00:00:00.123456789 | 2021-08-11         |
      | 2021-11-21 | 2021-11-22     | 2021-11-21 00:09:00 | 2021-11-20        | 2021-09-11 00:00:00.123456789 | 2021-09-11         |
      | 2021-11-20 | 2021-11-21     | 2021-11-20 00:10:00 | 2021-11-19        | 2021-10-11 00:00:00.123456789 | 2021-10-11         |
      +------------+----------------+---------------------+-------------------+-------------------------------+--------------------+

DATEADD

  • Sintaksis

    DATE|DATETIME DATEADD(DATE|DATETIME|TIMESTAMP <date>, BIGINT <delta>, STRING <datepart>)
  • Deskripsi

    Mengubah nilai tanggal berdasarkan unit waktu yang ditentukan oleh datepart dan interval yang ditentukan oleh delta. Untuk menambahkan atau mengurangi interval ke atau dari waktu saat ini, Anda dapat menggunakan fungsi ini dengan fungsi GETDATE.

  • Parameter

    Parameter

    Diperlukan

    Deskripsi

    date

    Ya

    Nilai tanggal bertipe DATE, DATETIME, atau TIMESTAMP. Nilai bertipe STRING secara implisit dikonversi menjadi nilai bertipe DATETIME sebelum perhitungan jika format nilainya sesuai dengan format tipe DATETIME yyyy-mm-dd hh:mi:ss, seperti 2021-08-28 00:00:00, dan edisi tipe data MaxCompute V1.0 digunakan.

    delta

    Ya

    Interval yang ingin Anda tambahkan atau kurangi dari komponen tertentu dari nilai tanggal. Nilai parameter ini harus bertipe BIGINT. Jika nilai delta lebih besar dari 0, interval ditambahkan ke nilai tanggal. Sebaliknya, interval dikurangi dari nilai tanggal. Jika nilai input bertipe STRING atau DOUBLE, nilai tersebut secara implisit dikonversi menjadi nilai bertipe BIGINT sebelum perhitungan.

    Catatan
    • Jika Anda menambahkan atau mengurangi interval yang ditentukan oleh delta berdasarkan unit waktu yang ditentukan oleh datepart, carry atau return pada komponen tanggal yang lebih signifikan mungkin terjadi. Bagian tahun, bulan, jam, menit, dan detik dihitung sesuai dengan sistem numeral basis-10, basis-12, basis-24, dan basis-60, masing-masing.

    • Jika fungsi DATEADD menambahkan interval yang ditentukan oleh delta ke komponen bulan dari nilai tanggal dan operasi ini tidak menyebabkan overflow pada komponen hari, nilai komponen hari dipertahankan. Sebaliknya, nilai komponen hari disetel ke hari terakhir dari bulan yang ditentukan.

    datepart

    Ya

    Bagian tanggal yang ingin Anda ubah dalam nilai tanggal. Nilainya adalah konstanta bertipe STRING. Jika format nilai input tidak valid atau nilai input bukan konstanta bertipe STRING, kesalahan akan dikembalikan.

    Nilai parameter ini ditentukan sesuai dengan aturan konversi antara tipe STRING dan DATETIME. Nilai yyyy menunjukkan komponen tahun dari nilai tanggal. Nilai mm menunjukkan komponen bulan dari nilai tanggal. Nilai dd menunjukkan komponen hari dari nilai tanggal. Untuk informasi lebih lanjut tentang aturan konversi tipe, lihat Konversi tipe. Format Tanggal/Waktu Diperluas (EDTF) juga didukung, seperti -year, -month, -mon, -day, atau -hour.

  • Nilai Kembali

    Nilai bertipe DATE atau DATETIME dikembalikan. Nilai kembali dalam format yyyy-mm-dd atau yyyy-mm-dd hh:mi:ss. Nilai kembali bervariasi berdasarkan aturan berikut:

    • Jika nilai date bukan bertipe DATE, DATETIME, atau TIMESTAMP, kesalahan dikembalikan.

    • Jika nilai date adalah null, kesalahan dikembalikan.

    • Jika nilai delta atau datepart adalah null, null dikembalikan.

  • Contoh

    • Contoh data statis

      • Contoh 1: Penggunaan umum

        -- Nilai kembali adalah 2005-03-01 00:00:00. Setelah satu hari ditambahkan, hasilnya melebihi hari terakhir Februari. Hari pertama Maret dikembalikan. 
        SELECT DATEADD(DATETIME '2005-02-28 00:00:00', 1, 'dd');
        
        -- Nilai kembali adalah 2005-02-27 00:00:00. Satu hari dikurangi. 
        SELECT DATEADD(DATETIME '2005-02-28 00:00:00', -1, 'dd');
        
        -- Nilai kembali adalah 2006-10-28 00:00:00. Setelah 20 bulan ditambahkan, bulan meluap, dan nilai tahun bertambah 1. 
        SELECT DATEADD(DATETIME '2005-02-28 00:00:00', 20, 'mm');
        
        -- Nilai kembali adalah 2005-03-28 00:00:00. 
        SELECT DATEADD(DATETIME '2005-02-28 00:00:00', 1, 'mm');
        
        -- Nilai kembali adalah 2005-02-28 00:00:00. Februari 2005 hanya memiliki 28 hari. Oleh karena itu, hari terakhir Februari dikembalikan. 
        SELECT DATEADD(DATETIME '2005-01-29 00:00:00', 1, 'mm');
        
        -- Nilai kembali adalah 2005-02-28 00:00:00. 
        SELECT DATEADD(DATETIME '2005-03-30 00:00:00', -1, 'mm');
        
        -- Nilai kembali adalah 2005-03-18. 
        SELECT DATEADD(DATE '2005-02-18', 1, 'mm');
        
        -- Aktifkan edisi tipe data MaxCompute V2.0. Kirim pernyataan SET berikut bersama dengan pernyataan SQL. Nilai kembali adalah 2005-03-18 00:00:00.0. 
        SET odps.sql.type.system.odps2=true;
        SELECT DATEADD(TIMESTAMP '2005-02-18 00:00:00', 1, 'mm');
        
        -- Jika waktu saat ini adalah 2020-11-17 16:31:44, nilai kembali adalah 2020-11-16 16:31:44. 
        SELECT DATEADD(GETDATE(),-1,'dd');
        
        -- Nilai kembali adalah NULL. 
        SELECT DATEADD(DATE '2005-02-18', 1, null);
        
        -- Nilai kembali adalah 2005-03-30 02:24:00, dengan 3 jam dikurangi. 
        SELECT DATEADD(DATETIME '2005-03-30 05:24:00', -3, 'hh');
        
        -- Nilai kembali adalah 2005-03-30 04:54:00, dengan 30 menit dikurangi. 
        SELECT DATEADD(DATETIME '2005-03-30 05:24:00', -30, 'mi');
        
        -- Nilai kembali adalah 2005-03-30 05:23:30, dengan 30 detik dikurangi.
        SELECT DATEADD(DATETIME '2005-03-30 05:24:00', -30, 'ss');
      • Contoh 2: Penggunaan DATEADD di mana nilai bertipe DATETIME dinyatakan sebagai konstanta.

        Dalam pernyataan SQL MaxCompute, nilai bertipe DATETIME tidak dapat langsung dinyatakan sebagai konstanta. Pernyataan berikut menggunakan ekspresi tidak valid untuk nilai bertipe DATETIME:

        SELECT DATEADD(2005-03-30 00:00:00, -1, 'mm');

        Untuk mendeskripsikan konstanta bertipe DATETIME, gunakan ekspresi valid untuk nilai bertipe DATETIME dalam pernyataan berikut:

        -- Konversi eksplisit konstanta bertipe STRING menjadi tipe DATETIME. Nilai kembali adalah 2005-02-28 00:00:00. 
        SELECT DATEADD(CAST("2005-03-30 00:00:00" AS datetime), -1, 'mm');
      • Contoh 3: Nilai input bertipe STRING.

        -- Nilai input bertipe STRING tetapi tidak sesuai dengan format tipe DATETIME. Akibatnya, kesalahan dikembalikan. 
        SELECT DATEADD('2021-08-27',1,'dd');
        
        -- Nilai input bertipe STRING dan sesuai dengan format tipe DATETIME, dan edisi tipe data MaxCompute V1.0 digunakan dalam proyek Anda. Nilai kembali adalah 2005-03-01 00:00:00. 
        SET odps.sql.type.system.odps2=false;
        SELECT DATEADD('2005-02-28 00:00:00', 1, 'dd');
    • Contoh data tabel

      Ubah nilai tanggal di kolom date1, datetime1, dan timestamp1 berdasarkan unit waktu yang ditentukan oleh datepart dan interval yang ditentukan oleh delta. Data dalam Data Sampel digunakan dalam contoh ini. Pernyataan sampel:

      -- Aktifkan edisi tipe data MaxCompute V2.0. Kirim pernyataan SET berikut bersama dengan pernyataan SQL. 
      SET odps.sql.type.system.odps2=true;
      SELECT date1, 
             DATEADD(date1,1,'dd') AS date1_dateadd, 
             datetime1, 
             DATEADD(datetime1,1,'mm') AS datetime1_dateadd, 
             timestamp1, 
             DATEADD(timestamp1,-1,'yyyy') AS timestamp1_dateadd 
      FROM mf_date_fun_t;

      Hasil berikut dikembalikan.

      +------------+---------------+---------------------+---------------------+-------------------------------+-------------------------------+
      | date1      | date1_dateadd | datetime1           | datetime1_dateadd   | timestamp1                    | timestamp1_dateadd            |
      +------------+---------------+---------------------+---------------------+-------------------------------+-------------------------------+
      | 2021-11-29 | 2021-11-30    | 2021-11-29 00:01:00 | 2021-12-29 00:01:00 | 2021-01-11 00:00:00.123456789 | 2020-01-11 00:00:00.123456789 |
      | 2021-11-28 | 2021-11-29    | 2021-11-28 00:02:00 | 2021-12-28 00:02:00 | 2021-02-11 00:00:00.123456789 | 2020-02-11 00:00:00.123456789 |
      | 2021-11-27 | 2021-11-28    | 2021-11-27 00:03:00 | 2021-12-27 00:03:00 | 2021-03-11 00:00:00.123456789 | 2020-03-11 00:00:00.123456789 |
      | 2021-11-26 | 2021-11-27    | 2021-11-26 00:04:00 | 2021-12-26 00:04:00 | 2021-04-11 00:00:00.123456789 | 2020-04-11 00:00:00.123456789 |
      | 2021-11-25 | 2021-11-26    | 2021-11-25 00:05:00 | 2021-12-25 00:05:00 | 2021-05-11 00:00:00.123456789 | 2020-05-11 00:00:00.123456789 |
      | 2021-11-24 | 2021-11-25    | 2021-11-24 00:06:00 | 2021-12-24 00:06:00 | 2021-06-11 00:00:00.123456789 | 2020-06-11 00:00:00.123456789 |
      | 2021-11-23 | 2021-11-24    | 2021-11-23 00:07:00 | 2021-12-23 00:07:00 | 2021-07-11 00:00:00.123456789 | 2020-07-11 00:00:00.123456789 |
      | 2021-11-22 | 2021-11-23    | 2021-11-22 00:08:00 | 2021-12-22 00:08:00 | 2021-08-11 00:00:00.123456789 | 2020-08-11 00:00:00.123456789 |
      | 2021-11-21 | 2021-11-22    | 2021-11-21 00:09:00 | 2021-12-21 00:09:00 | 2021-09-11 00:00:00.123456789 | 2020-09-11 00:00:00.123456789 |
      | 2021-11-20 | 2021-11-21    | 2021-11-20 00:10:00 | 2021-12-20 00:10:00 | 2021-10-11 00:00:00.123456789 | 2020-10-11 00:00:00.123456789 |
      +------------+---------------+---------------------+---------------------+-------------------------------+-------------------------------+

DATE_FORMAT

  • Sintaksis

    STRING DATE_FORMAT(DATE|TIMESTAMP|STRING <date>, STRING <format>)
  • Deskripsi

    Mengonversi nilai tanggal menjadi string dalam format tertentu.

  • Parameter

    Parameter

    Diperlukan

    Deskripsi

    date

    Ya

    Nilai tanggal yang ingin Anda konversi. Nilai tanggal dapat berupa tipe DATE, TIMESTAMP, atau STRING.

    • Nilai tanggal bertipe DATE atau STRING hanya didukung ketika edisi tipe data yang kompatibel dengan Hive diaktifkan. Anda dapat menjalankan perintah set odps.sql.hive.compatible=true; untuk mengaktifkan edisi tipe data yang kompatibel dengan Hive.

    • Jika nilai tanggal adalah tipe STRING, hanya format berikut yang didukung:

      • 'yyyy-MM-dd', seperti '2019-12-27'.

      • 'yyyy-MM-dd hh:mm:ss', seperti '2019-12-27 12:23:10'.

      • 'yyyy-MM-dd hh:mm:ss.SSS', seperti '2019-12-27 12:23:10.123'.

    format

    Ya

    Konstanta bertipe STRING. format menentukan format tanggal, seperti yyyy-MM-dd hh:mm:ss:SSS dan yyyy-MM-dd hh:mi:ss:SSS. Nilai tersebut terdiri dari komponen berikut:

    • YYYY atau yyyy: tahun. yyyy mewakili tahun kalender dan YYYY mewakili tahun minggu.

      Catatan

      Tahun minggu mungkin tidak sesuai dengan tahun sebenarnya. Berhati-hatilah saat menggunakan format tahun minggu.

    • MM: bulan.

    • mm: menit.

    • dd: hari.

    • HH: jam yang dinyatakan dalam sistem 24 jam.

    • hh: jam yang dinyatakan dalam sistem 12 jam.

    • mi: menit.

    • ss: detik.

    • SSS: milidetik.

    Penting
    • Jika edisi tipe data yang kompatibel dengan Hive dinonaktifkan, baik HH maupun hh menunjukkan bahwa sistem24 jam digunakan. Dalam hal ini, format tanggal harus yyyy-MM-dd hh:mi:ss. Jika yyyy-MM-dd hh:mm:ss digunakan, komponen mm mengambil nilai yang sama dengan komponen MM.

    • Jika edisi tipe data yang kompatibel dengan Hive diaktifkan, HH menunjukkan bahwa sistem 24 jam digunakan, dan hh menunjukkan bahwa sistem 12 jam digunakan. Dalam hal ini, format tanggal harus yyyy-MM-dd hh:mm:ss. Jika yyyy-MM-dd hh:mi:ss digunakan, null dikembalikan.

  • Nilai Pengembalian

    Nilai bertipe STRING dikembalikan. Nilai pengembalian bervariasi berdasarkan aturan berikut:

    • Jika nilai date bukan bertipe DATE atau TIMESTAMP, null dikembalikan.

    • Jika nilai date adalah null, kesalahan dikembalikan.

    • Jika nilai format adalah null, null dikembalikan.

  • Contoh

    • Contoh data statis

      -- Aktifkan edisi tipe data yang kompatibel dengan Hive. Kirimkan pernyataan SET berikut bersama dengan pernyataan SQL. 
      SET odps.sql.hive.compatible=true;
      
      -- Jika waktu saat ini adalah 2022-04-24 15:49, nilai pengembalian adalah 2022-04-24 03:49:01.902. 
      SELECT DATE_FORMAT(FROM_UTC_TIMESTAMP(CURRENT_TIMESTAMP(), 'UTC'),'yyyy-MM-dd hh:mm:ss.SSS');
      
      -- Nilai pengembalian adalah 2022-04-24. 
      SELECT DATE_FORMAT('2022-04-24','yyyy-MM-dd');
    • Contoh data tabel

      Konversikan nilai tanggal di kolom datetime1 dan timestamp1 menjadi string dalam format tertentu. Data dalam Data Sampel digunakan dalam contoh ini. Pernyataan sampel:

      -- Aktifkan edisi tipe data yang kompatibel dengan Hive dan edisi tipe data MaxCompute V2.0. Kirimkan pernyataan SET berikut bersama dengan pernyataan SQL. 
      SET odps.sql.hive.compatible=true;
      SET odps.sql.type.system.odps2=true;
      SELECT datetime1, timestamp1, DATE_FORMAT(datetime1,'yyyy/MM/dd'),
             DATE_FORMAT(datetime1,'yyyy/MM/dd HH:mm:ss'),
             DATE_FORMAT(timestamp1,'yyyy/MM/dd HH:mm:ss')
      FROM mf_date_fun_t;

      Hasil berikut dikembalikan.

      +------------+------------+-----+-----+-----+
      | datetime1  | timestamp1 | _c2 | _c3 | _c4 |
      +------------+------------+-----+-----+-----+
      | 2021-11-29 00:01:00 | 2021-01-11 00:00:00.123456789 | 2021/11/29 | 2021/11/29 00:01:00 | 2021/01/11 00:00:00 |
      | 2021-11-28 00:02:00 | 2021-02-11 00:00:00.123456789 | 2021/11/28 | 2021/11/28 00:02:00 | 2021/02/11 00:00:00 |
      | 2021-11-27 00:03:00 | 2021-03-11 00:00:00.123456789 | 2021/11/27 | 2021/11/27 00:03:00 | 2021/03/11 00:00:00 |
      | 2021-11-26 00:04:00 | 2021-04-11 00:00:00.123456789 | 2021/11/26 | 2021/11/26 00:04:00 | 2021/04/11 00:00:00 |
      | 2021-11-25 00:05:00 | 2021-05-11 00:00:00.123456789 | 2021/11/25 | 2021/11/25 00:05:00 | 2021/05/11 00:00:00 |
      | 2021-11-24 00:06:00 | 2021-06-11 00:00:00.123456789 | 2021/11/24 | 2021/11/24 00:06:00 | 2021/06/11 00:00:00 |
      | 2021-11-23 00:07:00 | 2021-07-11 00:00:00.123456789 | 2021/11/23 | 2021/11/23 00:07:00 | 2021/07/11 00:00:00 |
      | 2021-11-22 00:08:00 | 2021-08-11 00:00:00.123456789 | 2021/11/22 | 2021/11/22 00:08:00 | 2021/08/11 00:00:00 |
      | 2021-11-21 00:09:00 | 2021-09-11 00:00:00.123456789 | 2021/11/21 | 2021/11/21 00:09:00 | 2021/09/11 00:00:00 |
      | 2021-11-20 00:10:00 | 2021-10-11 00:00:00.123456789 | 2021/11/20 | 2021/11/20 00:10:00 | 2021/10/11 00:00:00 |
      +------------+------------+-----+-----+-----+

DATE_SUB

  • Sintaksis

    DATE DATE_SUB(DATE|TIMESTAMP|STRING <startdate>, BIGINT <delta>)
  • Deskripsi

    Menambahkan atau mengurangi sejumlah hari yang ditentukan oleh delta ke atau dari nilai tanggal yang ditentukan oleh startdate.

    Catatan
    • Untuk menambahkan atau mengurangi sejumlah hari ke atau dari waktu saat ini, Anda dapat menggunakan fungsi ini dengan fungsi GETDATE.

    • Jika Anda perlu melakukan penyesuaian yang tepat pada tingkat jam, menit, atau detik, lihat fungsi DATEADD. Fungsi ini hanya mendukung penambahan atau pengurangan satu unit di antara tahun, bulan, hari, jam, menit, atau detik. Jika Anda perlu menyesuaikan beberapa granularitas secara bersamaan, kami sarankan menggunakan fungsi yang ditentukan pengguna.

    • Logika fungsi ini berlawanan dengan fungsi DATE_ADD.

  • Parameter

    Parameter

    Diperlukan

    Deskripsi

    startdate

    Ya

    Tanggal awal. Nilai bertipe DATE, DATETIME, atau STRING didukung. Jika nilai input bertipe STRING dan edisi tipe data MaxCompute V1.0 digunakan dalam proyek Anda, nilai input akan dikonversi implisit ke tipe DATE sebelum perhitungan. Nilai bertipe STRING harus mencakup setidaknya bagian 'yyyy-mm-dd', seperti '2019-12-27'.

    delta

    Ya

    Jumlah hari yang ingin Anda tambahkan atau kurangi. Nilai parameter ini harus bertipe BIGINT. Jika nilai delta lebih besar dari 0, sejumlah hari akan dikurangi dari tanggal awal. Jika nilai delta kurang dari 0, sejumlah hari akan ditambahkan ke tanggal awal. Jika nilai delta adalah 0, nilai tanggal tetap tidak berubah.

  • Nilai Kembali

    Nilai bertipe DATE dikembalikan. Nilai kembali dalam format yyyy-mm-dd. Nilai kembali bervariasi berdasarkan aturan berikut:

    • Jika nilai startdate bukan bertipe DATE, DATETIME, atau STRING, kesalahan akan dikembalikan.

    • Jika nilai startdate adalah null, kesalahan akan dikembalikan.

    • Jika nilai delta adalah null, null akan dikembalikan.

  • Contoh

    • Contoh data statis

      -- Aktifkan edisi tipe data MaxCompute V2.0. Kirimkan pernyataan SET berikut bersama dengan pernyataan SQL. 
      SET odps.sql.type.system.odps2=true;
      
      -- Nilai kembali adalah 2005-02-28. Satu hari dikurangi. Hari terakhir Februari dikembalikan. 
      SELECT DATE_SUB(datetime '2005-03-01 00:00:00', 1);
      
      -- Nilai kembali adalah 2005-03-01. Satu hari ditambahkan. 
      SELECT DATE_SUB(date '2005-02-28', -1);
      
      -- Nilai kembali adalah 2005-02-27. Dua hari dikurangi. 
      SET odps.sql.type.system.odps2=false; 
      SELECT DATE_SUB('2005-03-01 00:00:00', 2);
      
      -- Jika waktu saat ini adalah 2021-09-10 16:31:44, nilai kembali adalah 2021-09-09. 
      SELECT DATE_SUB(GETDATE(),1);
      
      -- Nilai kembali adalah NULL. 
      SELECT DATE_SUB('2005-03-01 00:00:00', null);
    • Contoh data tabel

      Ubah nilai tanggal di kolom date1, datetime1, dan timestamp1 berdasarkan jumlah hari yang ditentukan oleh delta. Data dalam Data Sampel digunakan dalam contoh ini. Pernyataan sampel:

      -- Aktifkan edisi tipe data MaxCompute V2.0. Kirimkan pernyataan SET berikut bersama dengan pernyataan SQL. 
      SET odps.sql.type.system.odps2=true;
      SELECT date1, 
             DATE_SUB(date1,1) AS date1_date_sub, 
             datetime1, 
             DATE_SUB(datetime1,-1) AS datetime1_date_sub, 
             timestamp1, 
             DATE_SUB(timestamp1,0) AS timestamp1_date_sub 
      FROM mf_date_fun_t;

      Hasil berikut dikembalikan.

      +------------+----------------+---------------------+--------------------+-------------------------------+---------------------+
      | date1      | date1_date_sub | datetime1           | datetime1_date_sub | timestamp1                    | timestamp1_date_sub |
      +------------+----------------+---------------------+--------------------+-------------------------------+---------------------+
      | 2021-11-29 | 2021-11-28     | 2021-11-29 00:01:00 | 2021-11-30         | 2021-01-11 00:00:00.123456789 | 2021-01-11          |
      | 2021-11-28 | 2021-11-27     | 2021-11-28 00:02:00 | 2021-11-29         | 2021-02-11 00:00:00.123456789 | 2021-02-11          |
      | 2021-11-27 | 2021-11-26     | 2021-11-27 00:03:00 | 2021-11-28         | 2021-03-11 00:00:00.123456789 | 2021-03-11          |
      | 2021-11-26 | 2021-11-25     | 2021-11-26 00:04:00 | 2021-11-27         | 2021-04-11 00:00:00.123456789 | 2021-04-11          |
      | 2021-11-25 | 2021-11-24     | 2021-11-25 00:05:00 | 2021-11-26         | 2021-05-11 00:00:00.123456789 | 2021-05-11          |
      | 2021-11-24 | 2021-11-23     | 2021-11-24 00:06:00 | 2021-11-25         | 2021-06-11 00:00:00.123456789 | 2021-06-11          |
      | 2021-11-23 | 2021-11-22     | 2021-11-23 00:07:00 | 2021-11-24         | 2021-07-11 00:00:00.123456789 | 2021-07-11          |
      | 2021-11-22 | 2021-11-21     | 2021-11-22 00:08:00 | 2021-11-23         | 2021-08-11 00:00:00.123456789 | 2021-08-11          |
      | 2021-11-21 | 2021-11-20     | 2021-11-21 00:09:00 | 2021-11-22         | 2021-09-11 00:00:00.123456789 | 2021-09-11          |
      | 2021-11-20 | 2021-11-19     | 2021-11-20 00:10:00 | 2021-11-21         | 2021-10-11 00:00:00.123456789 | 2021-10-11          |
      +------------+----------------+---------------------+--------------------+-------------------------------+---------------------+

DATEDIFF

  • Sintaksis

    BIGINT DATEDIFF(DATE|DATETIME|TIMESTAMP <date1>, DATE|DATETIME|TIMESTAMP <date2>, STRING <datepart>)
  • Deskripsi

    Menghitung perbedaan antara date1 dan date2. Perbedaan diukur dalam satuan waktu yang ditentukan oleh datepart.

  • Parameter

    Parameter

    Wajib

    Deskripsi

    date1 dan date2

    Ya

    Nilai bertipe DATE, DATETIME, atau TIMESTAMP. Parameter ini menentukan pengurang dan yang dikurangi. Jika nilai input bertipe STRING dan edisi tipe data MaxCompute V1.0 digunakan dalam proyek Anda, nilai input secara implisit dikonversi ke tipe DATETIME sebelum perhitungan.

    Catatan

    Hanya edisi tipe data MaxCompute V2.0 yang mendukung tipe TIMESTAMP. Untuk informasi lebih lanjut, lihat Edisi tipe data MaxCompute V2.0.

    datepart

    Tidak

    Satuan waktu, yaitu konstanta bertipe STRING.

    Jika Anda mengaktifkan edisi tipe data MaxCompute V2.0, Anda dapat membiarkan datepart kosong. Nilai default: day. Untuk informasi lebih lanjut tentang edisi tipe data MaxCompute V2.0, lihat Edisi tipe data. EDTF juga didukung, seperti -year, -month, -mon, -day, atau -hour.

    Catatan

    Fungsi ini mengabaikan unit yang lebih rendah berdasarkan satuan waktu yang ditentukan oleh datepart dan kemudian menghitung hasilnya.

  • Nilai Kembali

    Nilai bertipe BIGINT dikembalikan. Nilai kembali bervariasi berdasarkan aturan berikut:

    • Jika nilai dari date1 atau date2 bukan bertipe DATE, DATETIME, atau TIMESTAMP, kesalahan akan dikembalikan.

    • Jika date1 kurang dari date2, nilai kembali adalah negatif.

    • Jika nilai dari date1 atau date2 adalah null, null akan dikembalikan.

    • Jika nilai dari datepart adalah null, null akan dikembalikan.

  • Contoh

    • Contoh data statis

      • Contoh 1

        SET odps.sql.type.system.odps2=true;
        SELECT DATEDIFF(TIMESTAMP '2006-01-01 00:00:00', TIMESTAMP '2005-12-31 23:59:59', 'dd'); 

        Hasil berikut dikembalikan.

        +------------+
        | _c0        |
        +------------+
        | 1          |
        +------------+
      • Contoh 2

        SET odps.sql.type.system.odps2=true;
        SELECT DATEDIFF(TIMESTAMP '2006-01-01 00:00:00', TIMESTAMP '2005-12-31 23:59:59', 'mm'); 

        Hasil berikut dikembalikan.

        +------------+
        | _c0        |
        +------------+
        | 1          |
        +------------+
      • Contoh 3

        SELECT  DATEDIFF(DATETIME '2013-05-31 13:00:00', DATETIME '2013-05-31 12:30:00','ss');

        Hasil berikut dikembalikan.

        +------------+
        | _c0        |
        +------------+
        | 1800       |
        +------------+
      • Contoh 4

        SET odps.sql.type.system.odps2 = false;
        SELECT DATEDIFF('2013-05-31 13:00:00','2013-05-31 12:30:00','mi');

        Hasil berikut dikembalikan.

        +------------+
        | _c0        |
        +------------+
        | 30         |
        +------------+
      • Contoh 5

        -- Nilai tanggal yang akurat hingga milidetik tidak mengadopsi format DATETIME standar dan tidak dapat dikonversi secara implisit menjadi tipe DATETIME. Dalam hal ini, konversi eksplisit diperlukan.
        SELECT  DATEDIFF(
          TO_DATE('2018-06-04 19:33:23.250','yyyy-mm-dd hh:mi:ss.ff3'),
          TO_DATE('2018-06-04 19:33:23.234','yyyy-mm-dd hh:mi:ss.ff3'),
          'ff3');

        Hasil berikut dikembalikan.

        +------------+
        | _c0        |
        +------------+
        | 16         |
        +------------+

      • Contoh 6

        SET odps.sql.type.system.odps2=true;
        SELECT  DATEDIFF(DATE '2013-05-21',DATE '2013-05-10',NULL);

        Hasil berikut dikembalikan.

        +------------+
        | _c0        |
        +------------+
        | NULL       |
        +------------+
    • Contoh data tabel

      Hitung perbedaan antara nilai-nilai dalam kolom date1 dan date2, antara nilai-nilai dalam kolom datetime1 dan datetime2, serta antara nilai-nilai dalam kolom timestamp1 dan timestamp2. Data dalam Data Sampel digunakan dalam contoh ini. Pernyataan sampel:

      -- Aktifkan edisi tipe data MaxCompute V2.0. Kirimkan pernyataan SET berikut bersama dengan pernyataan SQL. 
      SET odps.sql.type.system.odps2 = true;
      
      SELECT  date1, 
              date2, 
              DATEDIFF(date1,date2,'dd') AS date1_date2_datediff, 
              datetime1, 
              datetime2, 
              DATEDIFF(datetime1,datetime2,'dd') AS datetime1_datetime2_datediff, 
              timestamp1, 
              timestamp2, 
              DATEDIFF(timestamp1,timestamp2,'mm') AS timestamp1_timestamp2_datediff
      FROM    mf_date_fun_t;

      Hasil berikut dikembalikan.

      +------------+------------+----------------------+---------------------+---------------------+------------------------------+-------------------------------+-------------------------------+--------------------------------+
      | date1      | date2      | date1_date2_datediff | datetime1           | datetime2           | datetime1_datetime2_datediff | timestamp1                    | timestamp2                    | timestamp1_timestamp2_datediff |
      +------------+------------+----------------------+---------------------+---------------------+------------------------------+-------------------------------+-------------------------------+--------------------------------+
      | 2021-11-29 | 2021-10-29 | 31                   | 2021-11-29 00:01:00 | 2021-10-29 00:00:00 | 31                           | 2021-01-11 00:00:00.123456789 | 2021-10-11 00:00:00.123456789 | -9                             |
      | 2021-11-28 | 2021-10-29 | 30                   | 2021-11-28 00:02:00 | 2021-10-29 00:00:00 | 30                           | 2021-02-11 00:00:00.123456789 | 2021-10-11 00:00:00.123456789 | -8                             |
      | 2021-11-27 | 2021-10-29 | 29                   | 2021-11-27 00:03:00 | 2021-10-29 00:00:00 | 29                           | 2021-03-11 00:00:00.123456789 | 2021-10-11 00:00:00.123456789 | -7                             |
      | 2021-11-26 | 2021-10-29 | 28                   | 2021-11-26 00:04:00 | 2021-10-29 00:00:00 | 28                           | 2021-04-11 00:00:00.123456789 | 2021-10-11 00:00:00.123456789 | -6                             |
      | 2021-11-25 | 2021-10-29 | 27                   | 2021-11-25 00:05:00 | 2021-10-29 00:00:00 | 27                           | 2021-05-11 00:00:00.123456789 | 2021-10-11 00:00:00.123456789 | -5                             |
      | 2021-11-24 | 2021-10-29 | 26                   | 2021-11-24 00:06:00 | 2021-10-29 00:00:00 | 26                           | 2021-06-11 00:00:00.123456789 | 2021-10-11 00:00:00.123456789 | -4                             |
      | 2021-11-23 | 2021-10-29 | 25                   | 2021-11-23 00:07:00 | 2021-10-29 00:00:00 | 25                           | 2021-07-11 00:00:00.123456789 | 2021-10-11 00:00:00.123456789 | -3                             |
      | 2021-11-22 | 2021-10-29 | 24                   | 2021-11-22 00:08:00 | 2021-10-29 00:00:00 | 24                           | 2021-08-11 00:00:00.123456789 | 2021-10-11 00:00:00.123456789 | -2                             |
      | 2021-11-21 | 2021-10-29 | 23                   | 2021-11-21 00:09:00 | 2021-10-29 00:00:00 | 23                           | 2021-09-11 00:00:00.123456789 | 2021-10-11 00:00:00.123456789 | -1                             |
      | 2021-11-20 | 2021-10-29 | 22                   | 2021-11-20 00:10:00 | 2021-10-29 00:00:00 | 22                           | 2021-10-11 00:00:00.123456789 | 2021-10-11 00:00:00.123456789 | 0                              |
      +------------+------------+----------------------+---------------------+---------------------+------------------------------+-------------------------------+-------------------------------+--------------------------------+

DATEPART

  • Sintaksis

    BIGINT DATEPART(DATE|DATETIME|TIMESTAMP <date>, STRING <datepart>)
  • Deskripsi

    Mengembalikan komponen tertentu dari nilai tanggal berdasarkan unit waktu yang ditentukan oleh datepart.

  • Parameter

    Parameter

    Diperlukan

    Deskripsi

    date

    Ya

    Nilai bertipe DATE, DATETIME, atau TIMESTAMP. Jika nilai input bertipe STRING dan edisi tipe data MaxCompute V1.0 digunakan dalam proyek Anda, nilai input secara implisit dikonversi ke tipe DATETIME sebelum perhitungan dilakukan.

    datepart

    Ya

    Konstanta bertipe STRING. Parameter ini mendukung EDTF.

    Nilai parameter ini ditentukan sesuai dengan aturan konversi antara tipe STRING dan DATETIME. Nilai yyyy menunjukkan komponen tahun dari nilai tanggal. Nilai mm menunjukkan komponen bulan dari nilai tanggal. Nilai dd menunjukkan komponen hari dari nilai tanggal. Untuk informasi lebih lanjut tentang aturan konversi tipe, lihat Konversi Tipe. EDTF juga didukung, seperti -year, -month, -mon, -day, atau -hour.

  • Nilai Pengembalian

    Nilai bertipe BIGINT dikembalikan. Nilai pengembalian bervariasi berdasarkan aturan berikut:

    • Jika nilai date bukan bertipe DATE, DATETIME, atau TIMESTAMP, kesalahan akan dikembalikan.

    • Jika nilai date adalah null, kesalahan akan dikembalikan.

    • Jika nilai datepart adalah null, maka null akan dikembalikan.

  • Contoh

    • Contoh data statis

      -- Nilai pengembalian adalah 2013. 
      SELECT DATEPART(DATETIME '2013-06-08 01:10:00', 'yyyy'); 
      
      -- Nilai pengembalian adalah 6. 
      SELECT DATEPART(DATETIME '2013-06-08 01:10:00', 'mm');
      
      -- Nilai pengembalian adalah 2013. 
      SELECT DATEPART(DATE '2013-06-08', 'yyyy');
      
      -- Aktifkan edisi tipe data MaxCompute V2.0. Kirimkan pernyataan SET berikut bersama dengan pernyataan SQL. Nilai pengembalian adalah 2013. 
      SET odps.sql.type.system.odps2=true;
      SELECT DATEPART(TIMESTAMP '2013-06-08 01:10:00', 'yyyy');
      
      -- Nilai pengembalian adalah 2013. 
      SET odps.sql.type.system.odps2=false;
      SELECT DATEPART('2013-06-08 01:10:00', 'yyyy');
      
      -- Nilai pengembalian adalah NULL. 
      SELECT DATEPART(DATE '2013-06-08', null);
    • Contoh data tabel

      Ekstrak nilai tanggal dari kolom date1, datetime1, dan timestamp1 berdasarkan unit waktu yang ditentukan oleh datepart. Data dalam Data Contoh digunakan dalam contoh ini. Pernyataan contoh:

      -- Aktifkan edisi tipe data MaxCompute V2.0. Kirimkan pernyataan SET berikut bersama dengan pernyataan SQL. 
      SET odps.sql.type.system.odps2=true;
      SELECT date1, 
             DATEPART(date1,'yyyy') AS date1_datepart, datetime1, 
             DATEPART(datetime1,'dd') AS datetime1_datepart, 
             timestamp1, 
             datepart(timestamp1,'mm') AS timestamp1_datepart 
        FROM mf_date_fun_t;

      Hasil berikut dikembalikan.

      +------------+----------------+---------------------+-------------------------+-------------------------------+---------------------+
      | date1      | date1_datepart | datetime1           | datetime1_datepart      | timestamp1                    | timestamp1_datepart |
      +------------+----------------+---------------------+-------------------------+-------------------------------+---------------------+
      | 2021-11-29 | 2021           | 2021-11-29 00:01:00 | 29                      | 2021-01-11 00:00:00.123456789 | 1                   |
      | 2021-11-28 | 2021           | 2021-11-28 00:02:00 | 28                      | 2021-02-11 00:00:00.123456789 | 2                   |
      | 2021-11-27 | 2021           | 2021-11-27 00:03:00 | 27                      | 2021-03-11 00:00:00.123456789 | 3                   |
      | 2021-11-26 | 2021           | 2021-11-26 00:04:00 | 26                      | 2021-04-11 00:00:00.123456789 | 4                   |
      | 2021-11-25 | 2021           | 2021-11-25 00:05:00 | 25                      | 2021-05-11 00:00:00.123456789 | 5                   |
      | 2021-11-24 | 2021           | 2021-11-24 00:06:00 | 24                      | 2021-06-11 00:00:00.123456789 | 6                   |
      | 2021-11-23 | 2021           | 2021-11-23 00:07:00 | 23                      | 2021-07-11 00:00:00.123456789 | 7                   |
      | 2021-11-22 | 2021           | 2021-11-22 00:08:00 | 22                      | 2021-08-11 00:00:00.123456789 | 8                   |
      | 2021-11-21 | 2021           | 2021-11-21 00:09:00 | 21                      | 2021-09-11 00:00:00.123456789 | 9                   |
      | 2021-11-20 | 2021           | 2021-11-20 00:10:00 | 20                      | 2021-10-11 00:00:00.123456789 | 10                  |
      +------------+----------------+---------------------+-------------------------+-------------------------------+---------------------+

DATETRUNC

  • Sintaksis

    DATE|DATETIME DATETRUNC(DATE|DATETIME|TIMESTAMP <date>, STRING <datepart>)
  • Deskripsi

    Memotong nilai tanggal berdasarkan unit waktu yang ditentukan oleh datepart.

  • Parameter

    Parameter

    Wajib

    Deskripsi

    date

    Ya

    Nilai bertipe DATE, DATETIME, atau TIMESTAMP. Jika nilai input bertipe STRING dan edisi tipe data MaxCompute V1.0 digunakan dalam proyek Anda, nilai input akan dikonversi secara implisit menjadi tipe DATETIME sebelum perhitungan.

    datepart

    Ya

    Konstanta bertipe STRING. Parameter ini mendukung EDTF.

    Nilai parameter ini ditentukan sesuai dengan aturan konversi antara tipe STRING dan DATETIME. Nilai yyyy menunjukkan komponen tahun dari nilai tanggal. Nilai mm menunjukkan komponen bulan dari nilai tanggal. Nilai dd menunjukkan komponen hari dari nilai tanggal. Untuk informasi lebih lanjut tentang aturan konversi tipe, lihat Konversi Tipe. EDTF juga didukung, seperti -year, -month, -mon, -day, atau -hour.

  • Nilai Pengembalian

    Nilai dari tipe DATE atau DATETIME dikembalikan. Nilai kembali berada dalam format yyyy-mm-dd atau yyyy-mm-dd hh:mi:ss. Nilai kembali bervariasi berdasarkan aturan berikut:

    • Jika nilai date bukan bertipe DATE, DATETIME, atau TIMESTAMP, kesalahan akan dikembalikan.

    • Jika nilai date adalah null, kesalahan akan dikembalikan.

    • Jika nilai datepart adalah null, null akan dikembalikan.

  • Contoh

    • Contoh data statis

      -- Nilai pengembalian adalah 2011-01-01 00:00:00. 
      SELECT DATETRUNC(DATETIME '2011-12-07 16:28:46', 'yyyy');
      
      -- Nilai pengembalian adalah 2011-12-01 00:00:00. 
      SELECT DATETRUNC(DATETIME'2011-12-07 16:28:46', 'month');
      
      -- Nilai pengembalian adalah 2011-12-07 00:00:00. 
      SELECT DATETRUNC(DATETIME'2011-12-07 16:28:46', 'DD');
      
      -- Nilai pengembalian adalah 2011-01-01. 
      SELECT DATETRUNC(DATE '2011-12-07', 'yyyy');
      
      -- Aktifkan edisi tipe data MaxCompute V2.0. Kirim pernyataan SET berikut bersama dengan pernyataan SQL. Nilai pengembalian adalah 2011-01-01 00:00:00.0. 
      SET odps.sql.type.system.odps2=true;
      SELECT DATETRUNC(TIMESTAMP '2011-12-07 16:28:46', 'yyyy');
      
      -- Nilai pengembalian adalah 2011-01-01 00:00:00.0. 
      SET odps.sql.type.system.odps2=false;
      SELECT DATETRUNC('2011-12-07 16:28:46', 'yyyy');
      
      -- Nilai pengembalian adalah NULL. 
      SELECT DATETRUNC(DATE '2011-12-07', null);
    • Contoh data tabel

      Potong nilai tanggal di kolom date1, datetime1, dan timestamp1 berdasarkan unit waktu yang ditentukan oleh datepart. Data dalam Data Contoh digunakan dalam contoh ini. Pernyataan contoh:

      -- Aktifkan edisi tipe data MaxCompute V2.0. Kirim pernyataan SET berikut bersama dengan pernyataan SQL. 
      SET odps.sql.type.system.odps2=true;
      SELECT date1, 
             DATETRUNC(date1,'yyyy') AS date1_datetrunc, 
             datetime1, 
             DATETRUNC(datetime1,'dd') AS datetime1_datetrunc, 
             timestamp1, 
             DATETRUNC(timestamp1,'mm') AS timestamp1_datetrunc 
        FROM mf_date_fun_t;

      Hasil berikut dikembalikan.

      +------------+-----------------+---------------------+---------------------+-------------------------------+----------------------+
      | date1      | date1_datetrunc | datetime1           | datetime1_datetrunc | timestamp1                    | timestamp1_datetrunc |
      +------------+-----------------+---------------------+---------------------+-------------------------------+----------------------+
      | 2021-11-29 | 2021-01-01      | 2021-11-29 00:01:00 | 2021-11-29 00:00:00 | 2021-01-11 00:00:00.123456789 | 2021-01-01 00:00:00  |
      | 2021-11-28 | 2021-01-01      | 2021-11-28 00:02:00 | 2021-11-28 00:00:00 | 2021-02-11 00:00:00.123456789 | 2021-02-01 00:00:00  |
      | 2021-11-27 | 2021-01-01      | 2021-11-27 00:03:00 | 2021-11-27 00:00:00 | 2021-03-11 00:00:00.123456789 | 2021-03-01 00:00:00  |
      | 2021-11-26 | 2021-01-01      | 2021-11-26 00:04:00 | 2021-11-26 00:00:00 | 2021-04-11 00:00:00.123456789 | 2021-04-01 00:00:00  |
      | 2021-11-25 | 2021-01-01      | 2021-11-25 00:05:00 | 2021-11-25 00:00:00 | 2021-05-11 00:00:00.123456789 | 2021-05-01 00:00:00  |
      | 2021-11-24 | 2021-01-01      | 2021-11-24 00:06:00 | 2021-11-24 00:00:00 | 2021-06-11 00:00:00.123456789 | 2021-06-01 00:00:00  |
      | 2021-11-23 | 2021-01-01      | 2021-11-23 00:07:00 | 2021-11-23 00:00:00 | 2021-07-11 00:00:00.123456789 | 2021-07-01 00:00:00  |
      | 2021-11-22 | 2021-01-01      | 2021-11-22 00:08:00 | 2021-11-22 00:00:00 | 2021-08-11 00:00:00.123456789 | 2021-08-01 00:00:00  |
      | 2021-11-21 | 2021-01-01      | 2021-11-21 00:09:00 | 2021-11-21 00:00:00 | 2021-09-11 00:00:00.123456789 | 2021-09-01 00:00:00  |
      | 2021-11-20 | 2021-01-01      | 2021-11-20 00:10:00 | 2021-11-20 00:00:00 | 2021-10-11 00:00:00.123456789 | 2021-10-01 00:00:00  |
      +------------+-----------------+---------------------+---------------------+-------------------------------+----------------------+

HARI

  • Sintaksis

    INT DAY(DATETIME|TIMESTAMP|DATE|STRING <date>)
  • Deskripsi

    Mengembalikan hari di mana nilai tanggal jatuh. Fungsi ini merupakan bagian dari MaxCompute V2.0.

  • Parameter

    date: wajib. Nilai tanggal dengan tipe DATETIME, TIMESTAMP, DATE, atau STRING. Nilai input berada dalam format yyyy-mm-dd, yyyy-mm-dd hh:mi:ss, atau yyyy-mm-dd hh:mi:ss:ff3. Jika nilainya bertipe STRING, nilai tersebut harus mencakup setidaknya bagian yyyy-mm-dd dan tidak boleh mengandung string tambahan.

  • Nilai Kembali

    Nilai dengan tipe INT dikembalikan. Nilai kembali bervariasi berdasarkan aturan berikut:

    • Jika nilai dari date bukan bertipe DATETIME, TIMESTAMP, DATE, atau STRING atau formatnya tidak memenuhi persyaratan, null dikembalikan.

    • Jika nilai dari date adalah null, null dikembalikan.

  • Contoh

    • Contoh data statis

      -- Nilai 1 dikembalikan. 
      SELECT DAY('2014-09-01');
      
      -- Nilai kembali adalah NULL. 
      SELECT DAY('20140901');
      
      -- Nilai kembali adalah NULL. 
      SELECT DAY(null);
    • Contoh data tabel

      Mendapatkan hari di mana setiap nilai tanggal dalam kolom date1, datetime1, timestamp1, dan date3 jatuh. Data dalam Data Sampel digunakan dalam contoh ini. Pernyataan sampel:

      -- Aktifkan edisi tipe data MaxCompute V2.0. Kirimkan pernyataan SET berikut bersama dengan pernyataan SQL. 
      SET odps.sql.type.system.odps2=true;
      SELECT date1, 
             DAY(date1) AS date1_day, 
             datetime1, 
             DAY(datetime1) AS datetime1_day, 
             timestamp1, 
             DAY(timestamp1) AS timestamp1_day, 
             date3, 
             DAY(date3) AS date3_day 
        FROM mf_date_fun_t;

      Hasil berikut dikembalikan.

      +------------+-----------+---------------------+---------------+-------------------------------+----------------+------------+-----------+
      | date1      | date1_day | datetime1           | datetime1_day | timestamp1                    | timestamp1_day | date3      | date3_day |
      +------------+-----------+---------------------+---------------+-------------------------------+----------------+------------+-----------+
      | 2021-11-29 | 29        | 2021-11-29 00:01:00 | 29            | 2021-01-11 00:00:00.123456789 | 11             | 2021-11-20 | 20        |
      | 2021-11-28 | 28        | 2021-11-28 00:02:00 | 28            | 2021-02-11 00:00:00.123456789 | 11             | 2021-11-21 | 21        |
      | 2021-11-27 | 27        | 2021-11-27 00:03:00 | 27            | 2021-03-11 00:00:00.123456789 | 11             | 2021-11-22 | 22        |
      | 2021-11-26 | 26        | 2021-11-26 00:04:00 | 26            | 2021-04-11 00:00:00.123456789 | 11             | 2021-11-23 | 23        |
      | 2021-11-25 | 25        | 2021-11-25 00:05:00 | 25            | 2021-05-11 00:00:00.123456789 | 11             | 2021-11-24 | 24        |
      | 2021-11-24 | 24        | 2021-11-24 00:06:00 | 24            | 2021-06-11 00:00:00.123456789 | 11             | 2021-11-25 | 25        |
      | 2021-11-23 | 23        | 2021-11-23 00:07:00 | 23            | 2021-07-11 00:00:00.123456789 | 11             | 2021-11-26 | 26        |
      | 2021-11-22 | 22        | 2021-11-22 00:08:00 | 22            | 2021-08-11 00:00:00.123456789 | 11             | 2021-11-27 | 27        |
      | 2021-11-21 | 21        | 2021-11-21 00:09:00 | 21            | 2021-09-11 00:00:00.123456789 | 11             | 2021-11-28 | 28        |
      | 2021-11-20 | 20        | 2021-11-20 00:10:00 | 20            | 2021-10-11 00:00:00.123456789 | 11             | 2021-11-29 | 29        |
      +------------+-----------+---------------------+---------------+-------------------------------+----------------+------------+-----------+

DAYOFMONTH

  • Sintaksis

    INT DAYOFMONTH(DATETIME|TIMESTAMP|DATE|STRING <date>)
  • Deskripsi

    Mengembalikan komponen hari dari nilai tanggal. Fungsi ini merupakan bagian dari MaxCompute V2.0.

  • Parameter

    date: wajib. Nilai tanggal dengan tipe DATETIME, TIMESTAMP, DATE, atau STRING. Nilai input berada dalam format yyyy-mm-dd, yyyy-mm-dd hh:mi:ss, atau yyyy-mm-dd hh:mi:ss:ff3. Jika nilainya bertipe STRING, nilai tersebut harus mencakup setidaknya bagian yyyy-mm-dd dan tidak boleh mengandung string tambahan.

  • Nilai Kembali

    Nilai dengan tipe INT dikembalikan. Nilai kembali bervariasi berdasarkan aturan berikut:

    • Jika nilai date bukan bertipe DATETIME, TIMESTAMP, DATE, atau STRING atau formatnya tidak memenuhi persyaratan, null dikembalikan.

    • Jika nilai date adalah null, null dikembalikan.

  • Contoh

    • Contoh data statis

      -- Nilai 1 dikembalikan. 
      SELECT DAYOFMONTH('2014-09-01');
      
      -- Nilai kembali adalah NULL. 
      SELECT DAYOFMONTH('20140901');
      
      -- Nilai kembali adalah NULL. 
      SELECT DAYOFMONTH(null);
    • Contoh data tabel

      Mendapatkan komponen hari dari nilai tanggal di kolom date1, datetime1, timestamp1, dan date3. Data dalam Data Contoh digunakan dalam contoh ini. Pernyataan contoh:

      -- Aktifkan edisi tipe data MaxCompute V2.0. Kirim pernyataan SET berikut bersama dengan pernyataan SQL. 
      SET odps.sql.type.system.odps2=true;
      SELECT date1, 
             DAYOFMONTH(date1) AS date1_dayofmonth, 
             datetime1, 
             DAYOFMONTH(datetime1) AS datetime1_dayofmonth, 
             timestamp1, 
             DAYOFMONTH(timestamp1) AS timestamp1_dayofmonth, 
             date3, 
             DAYOFMONTH(date3) AS date3_dayofmonth 
        FROM mf_date_fun_t;

      Hasil berikut dikembalikan.

      +------------+------------------+---------------------+----------------------+-------------------------------+-----------------------+------------+------------------+
      | date1      | date1_dayofmonth | datetime1           | datetime1_dayofmonth | timestamp1                    | timestamp1_dayofmonth | date3      | date3_dayofmonth |
      +------------+------------------+---------------------+----------------------+-------------------------------+-----------------------+------------+------------------+
      | 2021-11-29 | 29               | 2021-11-29 00:01:00 | 29                   | 2021-01-11 00:00:00.123456789 | 11                    | 2021-11-20 | 20               |
      | 2021-11-28 | 28               | 2021-11-28 00:02:00 | 28                   | 2021-02-11 00:00:00.123456789 | 11                    | 2021-11-21 | 21               |
      | 2021-11-27 | 27               | 2021-11-27 00:03:00 | 27                   | 2021-03-11 00:00:00.123456789 | 11                    | 2021-11-22 | 22               |
      | 2021-11-26 | 26               | 2021-11-26 00:04:00 | 26                   | 2021-04-11 00:00:00.123456789 | 11                    | 2021-11-23 | 23               |
      | 2021-11-25 | 25               | 2021-11-25 00:05:00 | 25                   | 2021-05-11 00:00:00.123456789 | 11                    | 2021-11-24 | 24               |
      | 2021-11-24 | 24               | 2021-11-24 00:06:00 | 24                   | 2021-06-11 00:00:00.123456789 | 11                    | 2021-11-25 | 25               |
      | 2021-11-23 | 23               | 2021-11-23 00:07:00 | 23                   | 2021-07-11 00:00:00.123456789 | 11                    | 2021-11-26 | 26               |
      | 2021-11-22 | 22               | 2021-11-22 00:08:00 | 22                   | 2021-08-11 00:00:00.123456789 | 11                    | 2021-11-27 | 27               |
      | 2021-11-21 | 21               | 2021-11-21 00:09:00 | 21                   | 2021-09-11 00:00:00.123456789 | 11                    | 2021-11-28 | 28               |
      | 2021-11-20 | 20               | 2021-11-20 00:10:00 | 20                   | 2021-10-11 00:00:00.123456789 | 11                    | 2021-11-29 | 29               |
      +------------+------------------+---------------------+----------------------+-------------------------------+-----------------------+------------+------------------+

DAYOFWEEK

  • Sintaksis

    INT DAYOFWEEK(DATETIME|TIMESTAMP|DATE|STRING <date>)
  • Deskripsi

    Mengembalikan hari dalam seminggu di mana nilai tanggal jatuh. Fungsi ini merupakan bagian dari MaxCompute V2.0.

  • Parameter

    date: wajib. Nilai tanggal dengan tipe DATETIME, TIMESTAMP, DATE, atau STRING. Nilai input berada dalam format yyyy-mm-dd, yyyy-mm-dd hh:mi:ss, atau yyyy-mm-dd hh:mi:ss:ff3. Jika nilainya bertipe STRING, nilai tersebut harus mencakup setidaknya bagian yyyy-mm-dd dan tidak boleh berisi string tambahan.

  • Nilai Kembali

    Nilai dengan tipe INT dikembalikan. Nilai kembali bervariasi berdasarkan aturan berikut:

    • Jika nilai dari date bukan bertipe DATETIME, TIMESTAMP, DATE, atau STRING atau formatnya tidak memenuhi persyaratan, null dikembalikan.

    • Jika nilai dari date adalah null, null dikembalikan.

    • Nilai kembali berkisar antara 1 hingga 7. Nilai 1 menunjukkan Minggu, nilai 2 menunjukkan Senin, dan seterusnya.

  • Contoh

    -- Nilai kembali adalah 5. Nilai kembali menunjukkan Kamis. 
    SELECT DAYOFWEEK('2009-07-30');

DAYOFYEAR

  • Sintaksis

    INT DAYOFYEAR(DATETIME|TIMESTAMP|DATE|STRING <date>)
  • Deskripsi

    Mengembalikan bilangan bulat yang mewakili urutan hari dalam setahun. Fungsi ini merupakan bagian dari MaxCompute V2.0.

  • Parameter

    date: wajib. Nilai tanggal dengan tipe DATETIME, TIMESTAMP, DATE, atau STRING. Nilai input berada dalam format yyyy-mm-dd, yyyy-mm-dd hh:mi:ss, atau yyyy-mm-dd hh:mi:ss:ff3. Jika nilainya bertipe STRING, nilai tersebut harus mencakup setidaknya bagian yyyy-mm-dd dan tidak boleh mengandung string tambahan.

  • Nilai Pengembalian

    Nilai dengan tipe INT dikembalikan. Nilai pengembalian bervariasi berdasarkan aturan berikut:

    • Jika nilai dari date bukan bertipe DATETIME, TIMESTAMP, DATE, atau STRING atau formatnya tidak memenuhi persyaratan, null dikembalikan.

    • Jika nilai dari date adalah null, null dikembalikan.

  • Contoh

    -- Nilai pengembalian adalah 100. 
    SELECT DAYOFYEAR('2016-04-09');

EXTRACT

  • Sintaks

    INT EXTRACT(<datepart> FROM DATE|DATETIME|TIMESTAMP <date>)
  • Deskripsi

    Mengekstrak komponen tanggal yang ditentukan oleh datepart dari nilai tanggal yang ditentukan oleh date. Fungsi ini merupakan bagian dari MaxCompute V2.0.

  • Parameter

    Parameter

    Diperlukan

    Deskripsi

    datepart

    Ya

    Nilainya bisa berupa YEAR, MONTH, DAY, HOUR, MINUTE, atau SECOND.

    date

    Ya

    Nilai tanggal bertipe DATE, DATETIME, TIMESTAMP, atau STRING. Nilai input dalam format yyyy-mm-dd, yyyy-mm-dd hh:mi:ss, atau yyyy-mm-dd hh:mi:ss.ff3. Jika nilainya bertipe STRING, nilai tersebut harus mencakup setidaknya bagian yyyy-mm-dd dan tidak boleh mengandung string tambahan.

  • Nilai Kembali

    Nilai bertipe INT dikembalikan. Nilai kembali bervariasi berdasarkan aturan berikut:

    • Jika nilai dari datepart bukan YEAR, MONTH, DAY, HOUR, MINUTE, atau SECOND, kesalahan akan dikembalikan.

    • Jika nilai dari datepart adalah null, kesalahan akan dikembalikan.

    • Jika nilai dari date bukan bertipe DATE, DATETIME, TIMESTAMP, atau STRING atau bernilai null, null akan dikembalikan.

  • Contoh

    • Contoh data statis

      -- Aktifkan edisi tipe data MaxCompute V2.0. Kirim pernyataan SET berikut bersama dengan pernyataan SQL. 
      SET odps.sql.type.system.odps2=true;
      SELECT  EXTRACT(YEAR FROM '2019-05-01 11:21:00') YEAR, 
              EXTRACT(MONTH FROM '2019-05-01 11:21:00') MONTH, 
              EXTRACT(DAY FROM '2019-05-01 11:21:00') DAY, 
              EXTRACT(HOUR FROM '2019-05-01 11:21:00') HOUR, 
              EXTRACT(MINUTE FROM '2019-05-01 11:21:00') MINUTE;
              
      -- Hasil berikut dikembalikan: 
      +------+-------+------+------+--------+
      | year | month | day  | hour | minute |
      +------+-------+------+------+--------+
      | 2019 | 5     | 1    | 11   | 21     |
      +------+-------+------+------+--------+
      
      -- Nilai kembali adalah NULL. 
      SELECT  EXTRACT(YEAR FROM null);
    • Contoh data tabel

      Mengekstrak komponen tanggal yang ditentukan dari nilai tanggal di kolom timestamp1. Data dalam Data Contoh digunakan dalam contoh ini. Pernyataan contoh:

      -- Aktifkan edisi tipe data MaxCompute V2.0. Kirim pernyataan SET berikut bersama dengan pernyataan SQL. 
      SET odps.sql.type.system.odps2=true;
      SELECT timestamp1, 
             EXTRACT(YEAR FROM timestamp1) YEAR, 
             timestamp2, 
             EXTRACT(MONTH from timestamp2) MONTH 
        FROM mf_date_fun_t;

      Hasil berikut dikembalikan.

      +-------------------------------+------+-------------------------------+-------+
      | timestamp1                    | year | timestamp2                    | month |
      +-------------------------------+------+-------------------------------+-------+
      | 2021-01-11 00:00:00.123456789 | 2021 | 2021-10-11 00:00:00.123456789 | 10    |
      | 2021-02-11 00:00:00.123456789 | 2021 | 2021-10-11 00:00:00.123456789 | 10    |
      | 2021-03-11 00:00:00.123456789 | 2021 | 2021-10-11 00:00:00.123456789 | 10    |
      | 2021-04-11 00:00:00.123456789 | 2021 | 2021-10-11 00:00:00.123456789 | 10    |
      | 2021-05-11 00:00:00.123456789 | 2021 | 2021-10-11 00:00:00.123456789 | 10    |
      | 2021-06-11 00:00:00.123456789 | 2021 | 2021-10-11 00:00:00.123456789 | 10    |
      | 2021-07-11 00:00:00.123456789 | 2021 | 2021-10-11 00:00:00.123456789 | 10    |
      | 2021-08-11 00:00:00.123456789 | 2021 | 2021-10-11 00:00:00.123456789 | 10    |
      | 2021-09-11 00:00:00.123456789 | 2021 | 2021-10-11 00:00:00.123456789 | 10    |
      | 2021-10-11 00:00:00.123456789 | 2021 | 2021-10-11 00:00:00.123456789 | 10    |
      +-------------------------------+------+-------------------------------+-------+

FROM_UNIXTIME

  • Sintaksis

    DATETIME FROM_UNIXTIME(BIGINT <unixtime>)
  • Deskripsi

    Mengonversi unixtime tipe BIGINT menjadi nilai tanggal tipe DATETIME.

  • Parameter

    unixtime: wajib. Nilai tanggal tipe BIGINT dalam format UNIX. Nilai parameter ini akurat hingga detik. Nilai valid: [-62167305600, 253402387200].

    Catatan

    Jika nilai input adalah tipe STRING, DOUBLE, atau DECIMAL dan edisi tipe data MaxCompute V1.0 digunakan dalam Proyek Anda, nilai input secara implisit dikonversi ke tipe BIGINT sebelum perhitungan.

  • Nilai Kembali

    Nilai tipe DATETIME dikembalikan. Nilai kembali berada dalam format yyyy-mm-dd hh:mi:ss. Jika nilai dari unixtime adalah null, maka null akan dikembalikan.

    Catatan

    Anda dapat menjalankan perintah set odps.sql.hive.compatible=true; untuk mengaktifkan edisi tipe data yang kompatibel dengan Hive. Dalam edisi tipe data yang kompatibel dengan Hive, perhatikan aturan berikut:

    • Jika nilai input adalah tipe STRING, nilai tanggal tipe STRING akan dikembalikan.

    • Anda dapat menentukan parameter input kedua untuk menentukan format nilai kembali. Sebagai contoh, Anda dapat menentukan format tanggal dan waktu untuk nilai kembali di parameter input kedua menjadi yyyy-MM-dd atau YYYY-MM-dd. yyyy mewakili tahun kalender dan YYYY mewakili tahun dalam minggu. Tahun dalam minggu mungkin tidak sesuai dengan tahun sebenarnya. Berhati-hatilah saat menggunakan format tahun dalam minggu.

  • Contoh

    • Contoh data statis

      -- Nilai kembali adalah 1973-11-30 05:33:09. 
      SELECT FROM_UNIXTIME(123456789);
      
      -- Nilai kembali adalah 1973-11-30 05:33:09. 
      SET odps.sql.type.system.odps2=false;
      SELECT FROM_UNIXTIME('123456789');
      
      -- Nilai kembali adalah NULL. 
      SELECT FROM_UNIXTIME(null);
    • Contoh data tabel

      Konversikan nilai di kolom date4 menjadi nilai tanggal. Data dalam Data Sampel digunakan dalam contoh ini. Pernyataan sampel:

      SELECT date4, FROM_UNIXTIME(date4) AS date4_from_unixtime FROM mf_date_fun_t;

      Hasil berikut dikembalikan.

      +------------+---------------------+
      | date4      | date4_from_unixtime |
      +------------+---------------------+
      | 123456780  | 1973-11-30 05:33:00 |
      | 123456781  | 1973-11-30 05:33:01 |
      | 123456782  | 1973-11-30 05:33:02 |
      | 123456783  | 1973-11-30 05:33:03 |
      | 123456784  | 1973-11-30 05:33:04 |
      | 123456785  | 1973-11-30 05:33:05 |
      | 123456786  | 1973-11-30 05:33:06 |
      | 123456787  | 1973-11-30 05:33:07 |
      | 123456788  | 1973-11-30 05:33:08 |
      | 123456789  | 1973-11-30 05:33:09 |
      +------------+---------------------+

FROM_UTC_TIMESTAMP

  • Sintaks

    TIMESTAMP FROM_UTC_TIMESTAMP({any primitive type}*, STRING <timezone>)
  • Deskripsi

    Mengembalikan timestamp yang dikonversi dari Waktu Universal Terkoordinasi (UTC) ke zona waktu tertentu. Fungsi ini merupakan bagian dari MaxCompute V2.0.

    Penting

    Nilai kembali dari fungsi FROM_UTC_TIMESTAMP juga dipengaruhi oleh nilai odps.sql.timezone yang Anda konfigurasikan untuk proyek Anda. Jika Anda mengonfigurasi odps.sql.timezone=Asia/Shanghai, zona waktu UTC+8 digunakan, yang 8 jam lebih cepat dari UTC. Dalam hal ini, 8 jam ditambahkan ke hasil perhitungan fungsi FROM_UTC_TIMESTAMP. Sebagai contoh, fungsi FROM_UTC_TIMESTAMP(0, 'Asia/Shanghai') mengonversi timestamp dengan UTC+0 menjadi timestamp dengan waktu Beijing (UTC+08:00), dan hasil perhitungannya adalah 0 + 8 x 3600 = 28800. Konfigurasi odps.sql.timezone=Asia/Shanghai memerlukan offset tambahan 8 jam. Akibatnya, nilai kembali adalah 1970-01-01 16:00:00.

  • Parameter

    Parameter

    Diperlukan

    Deskripsi

    {any primitive type}*

    Ya

    Timestamp bertipe TIMESTAMP, DATETIME, TINYINT, SMALLINT, INT, atau BIGINT. Jika nilainya bertipe TINYINT, SMALLINT, INT, atau BIGINT, satuan waktunya akurat hingga milidetik.

    timezone

    Ya

    Zona waktu baru.

    Catatan

    Anda dapat mencari daftar zona waktu menggunakan mesin pencari.

  • Nilai Pengembalian

    Nilai bertipe TIMESTAMP dikembalikan. Nilai kembali berada dalam format yyyy-mm-dd hh:mi:ss.ff3. Nilai kembali bervariasi berdasarkan aturan berikut:

    • Jika nilai dari {any primitive type}* bukan bertipe TIMESTAMP, DATETIME, TINYINT, SMALLINT, INT, atau BIGINT, kesalahan akan dikembalikan.

    • Jika nilai dari {any primitive type}* adalah null, kesalahan akan dikembalikan.

    • Jika nilai dari timezone adalah null, null akan dikembalikan.

  • Contoh

    • Contoh data statis

      -- Satuan waktu dari nilai input akurat hingga milidetik dan nilai pengembalian adalah 2017-08-01 04:24:00.0. 
      SELECT FROM_UTC_TIMESTAMP(1501557840000, 'PST'); 
      
      -- Nilai pengembalian adalah 1970-01-30 08:00:00.0. 
      SELECT FROM_UTC_TIMESTAMP('1970-01-30 16:00:00','PST'); 
      
      -- Nilai pengembalian adalah 1970-01-29 16:00:00.0. 
      SELECT FROM_UTC_TIMESTAMP('1970-01-30','PST'); 
      
      -- Aktifkan edisi tipe data MaxCompute V2.0. Kirimkan pernyataan SET berikut bersama dengan pernyataan SQL. Nilai pengembalian adalah 2011-12-25 17:00:00:00.123. 
      SET odps.sql.type.system.odps2=true;
      SELECT FROM_UTC_TIMESTAMP(timestamp '2011-12-25 09:00:00.123456', 'Asia/Shanghai');
      
      -- Aktifkan edisi tipe data MaxCompute V2.0. Kirimkan pernyataan SET berikut bersama dengan pernyataan SQL. Nilai pengembalian adalah 2011-12-25 01:55:00.0. 
      SET odps.sql.type.system.odps2=true;
      SELECT FROM_UTC_TIMESTAMP(timestamp '2011-12-25 06:55:00', 'America/Toronto');
      
      -- Nilai pengembalian adalah NULL. 
      SELECT FROM_UTC_TIMESTAMP('1970-01-30',null);
    • Contoh data tabel

      Konversikan nilai tanggal di kolom datetime1 dan timestamp1 menjadi timestamp dalam zona waktu tertentu. Data dalam Data Sampel digunakan dalam contoh ini. Pernyataan sampel:

      -- Aktifkan edisi tipe data MaxCompute V2.0. Kirimkan pernyataan SET berikut bersama dengan pernyataan SQL. 
      SET odps.sql.type.system.odps2=true;
      SELECT datetime1, 
             FROM_UTC_TIMESTAMP(datetime1,'PST') pst, 
             timestamp1, 
             FROM_UTC_TIMESTAMP(timestamp1,'Asia/Shanghai') asia 
        FROM mf_date_fun_t;

      Hasil berikut dikembalikan.

      +---------------------+---------------------+-------------------------------+-------------------------------+
      | datetime1           | pst                 | timestamp1                    | asia                          |
      +---------------------+---------------------+-------------------------------+-------------------------------+
      | 2021-11-29 00:01:00 | 2021-11-28 16:01:00 | 2021-01-11 00:00:00.123456789 | 2021-01-11 08:00:00.123456789 |
      | 2021-11-28 00:02:00 | 2021-11-27 16:02:00 | 2021-02-11 00:00:00.123456789 | 2021-02-11 08:00:00.123456789 |
      | 2021-11-27 00:03:00 | 2021-11-26 16:03:00 | 2021-03-11 00:00:00.123456789 | 2021-03-11 08:00:00.123456789 |
      | 2021-11-26 00:04:00 | 2021-11-25 16:04:00 | 2021-04-11 00:00:00.123456789 | 2021-04-11 08:00:00.123456789 |
      | 2021-11-25 00:05:00 | 2021-11-24 16:05:00 | 2021-05-11 00:00:00.123456789 | 2021-05-11 08:00:00.123456789 |
      | 2021-11-24 00:06:00 | 2021-11-23 16:06:00 | 2021-06-11 00:00:00.123456789 | 2021-06-11 08:00:00.123456789 |
      | 2021-11-23 00:07:00 | 2021-11-22 16:07:00 | 2021-07-11 00:00:00.123456789 | 2021-07-11 08:00:00.123456789 |
      | 2021-11-22 00:08:00 | 2021-11-21 16:08:00 | 2021-08-11 00:00:00.123456789 | 2021-08-11 08:00:00.123456789 |
      | 2021-11-21 00:09:00 | 2021-11-20 16:09:00 | 2021-09-11 00:00:00.123456789 | 2021-09-11 08:00:00.123456789 |
      | 2021-11-20 00:10:00 | 2021-11-19 16:10:00 | 2021-10-11 00:00:00.123456789 | 2021-10-11 08:00:00.123456789 |
      +---------------------+---------------------+-------------------------------+-------------------------------+

GETDATE

  • Sintaksis

    DATETIME GETDATE()
  • Deskripsi

    Mengembalikan waktu sistem saat ini sebagai nilai tanggal. MaxCompute menggunakan UTC+8 sebagai zona waktu standar.

  • Nilai Pengembalian

    Tanggal dan waktu saat ini dikembalikan, yang bertipe DATETIME.

    Catatan

    Dalam MaxCompute SQL, GETDATE selalu mengembalikan nilai tetap. Nilai kembali adalah waktu arbitrer selama eksekusi tugas SQL MaxCompute. Waktu tersebut akurat hingga detik. Jika Anda mengaktifkan edisi tipe data MaxCompute V2.0, waktu tersebut akurat hingga milidetik.

JAM

  • Sintaksis

    INT HOUR(DATETIME|TIMESTAMP|STRING <tanggal>)
  • Deskripsi

    Mengembalikan komponen jam dari nilai tanggal.

  • Parameter

    date: wajib. Nilai tanggal dengan tipe DATETIME, TIMESTAMP, atau STRING. Nilai tanggal berada dalam format yyyy-mm-dd hh:mi:ss atau yyyy-mm-dd hh:mi:ss.ff3. Jika nilainya bertipe STRING, nilai tersebut harus mencakup setidaknya bagian yyyy-mm-dd dan tidak boleh mengandung string tambahan. Fungsi ini merupakan fungsi tambahan dari MaxCompute V2.0.

  • Nilai Kembali

    Nilai dengan tipe INT dikembalikan. Nilai kembali bervariasi berdasarkan aturan berikut:

    • Jika nilai dari tanggal bukan bertipe DATETIME, TIMESTAMP, atau STRING atau formatnya tidak memenuhi persyaratan, null dikembalikan.

    • Jika nilai dari tanggal adalah null, null dikembalikan.

  • Contoh

    • Contoh data statis

      -- Nilai kembali adalah 12. 
      SELECT HOUR('2014-09-01 12:00:00');
      
      -- Nilai kembali adalah 12. 
      SELECT HOUR('12:00:00');
      
      -- Nilai kembali adalah NULL. 
      SELECT HOUR('20140901120000');
      
      -- Nilai kembali adalah NULL. 
      SELECT HOUR(null);
    • Contoh data tabel

      Mendapatkan komponen jam dari nilai tanggal di kolom datetime1 dan timestamp1. Data dalam Data Sampel digunakan dalam contoh ini. Pernyataan sampel:

      -- Aktifkan edisi tipe data MaxCompute V2.0. Kirim pernyataan SET berikut bersama dengan pernyataan SQL. 
      SET odps.sql.type.system.odps2=true;
      SELECT datetime1, 
             HOUR(datetime1) AS datetime1_hour, 
             timestamp1, 
             HOUR(timestamp1) AS timestamp1_hour 
        FROM mf_date_fun_t;

      Hasil berikut dikembalikan.

      +---------------------+----------------+-------------------------------+-----------------+
      | datetime1           | datetime1_hour | timestamp1                    | timestamp1_hour |
      +---------------------+----------------+-------------------------------+-----------------+
      | 2021-11-29 00:01:00 | 0              | 2021-01-11 00:00:00.123456789 | 0               |
      | 2021-11-28 00:02:00 | 0              | 2021-02-11 00:00:00.123456789 | 0               |
      | 2021-11-27 00:03:00 | 0              | 2021-03-11 00:00:00.123456789 | 0               |
      | 2021-11-26 00:04:00 | 0              | 2021-04-11 00:00:00.123456789 | 0               |
      | 2021-11-25 00:05:00 | 0              | 2021-05-11 00:00:00.123456789 | 0               |
      | 2021-11-24 00:06:00 | 0              | 2021-06-11 00:00:00.123456789 | 0               |
      | 2021-11-23 00:07:00 | 0              | 2021-07-11 00:00:00.123456789 | 0               |
      | 2021-11-22 00:08:00 | 0              | 2021-08-11 00:00:00.123456789 | 0               |
      | 2021-11-21 00:09:00 | 0              | 2021-09-11 00:00:00.123456789 | 0               |
      | 2021-11-20 00:10:00 | 0              | 2021-10-11 00:00:00.123456789 | 0               |
      +---------------------+----------------+-------------------------------+-----------------+

ISDATE

  • Sintaksis

    BOOLEAN ISDATE(STRING <date>, STRING <format>)
  • Deskripsi

    Menentukan apakah string tanggal dapat dikonversi menjadi nilai tanggal dalam format tertentu. Jika string tanggal dapat dikonversi menjadi nilai tanggal dalam format yang ditentukan, nilai true akan dikembalikan. Sebaliknya, nilai false akan dikembalikan.

  • Parameter

    Parameter

    Diperlukan

    Deskripsi

    date

    Ya

    Nilai bertipe STRING. Jika nilai input bertipe BIGINT, DOUBLE, DECIMAL, atau DATETIME, nilai tersebut secara implisit dikonversi ke nilai bertipe STRING sebelum perhitungan.

    format

    Ya

    Konstanta bertipe STRING. Parameter ini tidak mendukung EDTF. Jika terdapat string format redundan di format, fungsi ini mengonversi string tanggal yang sesuai dengan string format pertama menjadi nilai tanggal. Sisa string dianggap sebagai pemisah. Contohnya, isdate("1234-yyyy", "yyyy-yyyy") mengembalikan nilai true.

  • Nilai Kembali

    Nilai bertipe BOOLEAN dikembalikan. Jika nilai dari date atau format adalah null, maka null akan dikembalikan.

  • Contoh

    • Contoh data statis

      -- Nilai kembali adalah true. 
      SELECT ISDATE('2021-10-11','yyyy-mm-dd');
      
      -- Nilai kembali adalah false. 
      SET odps.sql.type.system.odps2=false;
      SELECT ISDATE(1678952314,'yyyy-mm-dd');
    • Contoh data tabel

      Tentukan apakah string tanggal di kolom date3 dapat dikonversi menjadi nilai tanggal dalam format tertentu. Data dalam Data Contoh digunakan dalam contoh ini. Pernyataan contoh:

      SELECT date3, ISDATE(date3,'yyyy-mm-dd') AS date3_isdate FROM mf_date_fun_t;

      Hasil berikut dikembalikan.

      +------------+--------------+
      | date3      | date3_isdate |
      +------------+--------------+
      | 2021-11-20 | true         |
      | 2021-11-21 | true         |
      | 2021-11-22 | true         |
      | 2021-11-23 | true         |
      | 2021-11-24 | true         |
      | 2021-11-25 | true         |
      | 2021-11-26 | true         |
      | 2021-11-27 | true         |
      | 2021-11-28 | true         |
      | 2021-11-29 | true         |
      +------------+--------------+

LAST_DAY

  • Sintaksis

    STRING LAST_DAY(DATE|DATETIME|TIMESTAMP|STRING <date>)
  • Deskripsi

    Mengembalikan hari terakhir dari bulan di mana nilai tanggal berada. Fungsi ini merupakan bagian dari MaxCompute V2.0.

  • Parameter

    date: wajib. Nilai tanggal dengan tipe DATE, DATETIME, TIMESTAMP, atau STRING. Jika nilainya bertipe STRING, nilai tersebut harus mencakup setidaknya bagian yyyy-mm-dd dan tidak boleh mengandung string tambahan.

  • Nilai Kembali

    Nilai dengan tipe STRING dikembalikan. Nilai kembali berada dalam format yyyy-mm-dd. Nilai kembali bervariasi berdasarkan aturan berikut:

    • Jika nilai date bukan bertipe DATE, DATETIME, TIMESTAMP, atau STRING atau formatnya tidak memenuhi persyaratan, null dikembalikan.

    • Jika nilai date adalah null, kesalahan akan dikembalikan.

  • Contoh

    • Contoh data statis

      -- Nilai kembali adalah 2017-03-31. 
      SELECT LAST_DAY('2017-03-04');
      
      -- Nilai kembali adalah 2017-07-31. 
      SELECT LAST_DAY('2017-07-04 11:40:00');
      
      -- Nilai kembali adalah NULL. 
      SELECT LAST_DAY('20170304');
    • Contoh data tabel

      Mendapatkan hari terakhir dari bulan di mana setiap nilai tanggal dalam kolom date1, datetime1, timestamp1, dan date3 berada. Data dalam Data Sampel digunakan dalam contoh ini. Pernyataan sampel:

      -- Aktifkan edisi tipe data MaxCompute V2.0. Kirimkan pernyataan SET berikut bersama dengan pernyataan SQL. 
      SET odps.sql.type.system.odps2=true; 
      SELECT date1, 
             LAST_DAY(date1) AS date1_lastday, 
             datetime1, 
             LAST_DAY(datetime1) AS datetime1_lastday, 
             timestamp1, 
             LAST_DAY(timestamp1) AS timestamp1_lastday, 
             date3, 
             LAST_DAY(date3) AS date3_lastday 
        FROM mf_date_fun_t;

      Hasil berikut dikembalikan.

      +------------+---------------+---------------------+-------------------+-------------------------------+--------------------+------------+---------------+
      | date1      | date1_lastday | datetime1           | datetime1_lastday | timestamp1                    | timestamp1_lastday | date3      | date3_lastday |
      +------------+---------------+---------------------+-------------------+-------------------------------+--------------------+------------+---------------+
      | 2021-11-29 | 2021-11-30    | 2021-11-29 00:01:00 | 2021-11-30        | 2021-01-11 00:00:00.123456789 | 2021-01-31         | 2021-11-20 | 2021-11-30    |
      | 2021-11-28 | 2021-11-30    | 2021-11-28 00:02:00 | 2021-11-30        | 2021-02-11 00:00:00.123456789 | 2021-02-28         | 2021-11-21 | 2021-11-30    |
      | 2021-11-27 | 2021-11-30    | 2021-11-27 00:03:00 | 2021-11-30        | 2021-03-11 00:00:00.123456789 | 2021-03-31         | 2021-11-22 | 2021-11-30    |
      | 2021-11-26 | 2021-11-30    | 2021-11-26 00:04:00 | 2021-11-30        | 2021-04-11 00:00:00.123456789 | 2021-04-30         | 2021-11-23 | 2021-11-30    |
      | 2021-11-25 | 2021-11-30    | 2021-11-25 00:05:00 | 2021-11-30        | 2021-05-11 00:00:00.123456789 | 2021-05-31         | 2021-11-24 | 2021-11-30    |
      | 2021-11-24 | 2021-11-30    | 2021-11-24 00:06:00 | 2021-11-30        | 2021-06-11 00:00:00.123456789 | 2021-06-30         | 2021-11-25 | 2021-11-30    |
      | 2021-11-23 | 2021-11-30    | 2021-11-23 00:07:00 | 2021-11-30        | 2021-07-11 00:00:00.123456789 | 2021-07-31         | 2021-11-26 | 2021-11-30    |
      | 2021-11-22 | 2021-11-30    | 2021-11-22 00:08:00 | 2021-11-30        | 2021-08-11 00:00:00.123456789 | 2021-08-31         | 2021-11-27 | 2021-11-30    |
      | 2021-11-21 | 2021-11-30    | 2021-11-21 00:09:00 | 2021-11-30        | 2021-09-11 00:00:00.123456789 | 2021-09-30         | 2021-11-28 | 2021-11-30    |
      | 2021-11-20 | 2021-11-30    | 2021-11-20 00:10:00 | 2021-11-30        | 2021-10-11 00:00:00.123456789 | 2021-10-31         | 2021-11-29 | 2021-11-30    |
      +------------+---------------+---------------------+-------------------+-------------------------------+--------------------+------------+---------------+

LASTDAY

  • Sintaksis

    DATETIME LASTDAY(DATETIME <date>)
  • Deskripsi

    Mengembalikan hari terakhir dari bulan di mana nilai tanggal berada. Hanya komponen hari yang dipotong. Komponen jam, menit, dan detik dinyatakan sebagai 00:00:00.

  • Parameter

    tanggal: nilai tanggal dengan tipe DATETIME. Nilai tanggal berada dalam format yyyy-mm-dd hh:mi:ss. Jika nilai input adalah tipe STRING dan edisi tipe data MaxCompute V1.0 digunakan dalam proyek Anda, nilai input secara implisit dikonversi ke tipe DATETIME sebelum perhitungan.

  • Nilai Pengembalian

    Nilai dengan tipe DATETIME dikembalikan. Nilai kembali berada dalam format yyyy-mm-dd hh:mi:ss. Nilai kembali bervariasi berdasarkan aturan berikut:

    • Jika nilai tanggal bukan bertipe DATETIME atau STRING atau formatnya tidak memenuhi persyaratan, kesalahan akan dikembalikan.

    • Jika nilai tanggal adalah null, maka null akan dikembalikan.

  • Contoh

    • Contoh data statis

      -- Nilai pengembalian adalah 2013-06-30 00:00:00. 
      SELECT LASTDAY (DATETIME '2013-06-08 01:10:00');
      
      -- Nilai pengembalian adalah 2013-06-30 00:00:00. 
      SET odps.sql.type.system.odps2=false;
      SELECT LASTDAY ('2013-06-08 01:10:00');
      
      -- Nilai pengembalian adalah NULL. 
      SELECT LASTDAY (null);
    • Contoh data tabel

      Mendapatkan hari terakhir dari bulan di mana setiap nilai tanggal dalam kolom datetime1 berada. Data dalam Data Contoh digunakan dalam contoh ini. Pernyataan contoh:

      SELECT datetime1, LASTDAY(datetime1) AS datetime1_lastday FROM mf_date_fun_t;

      Hasil berikut dikembalikan.

      +---------------------+---------------------+
      | datetime1           | datetime1_lastday   |
      +---------------------+---------------------+
      | 2021-11-29 00:01:00 | 2021-11-30 00:00:00 |
      | 2021-11-28 00:02:00 | 2021-11-30 00:00:00 |
      | 2021-11-27 00:03:00 | 2021-11-30 00:00:00 |
      | 2021-11-26 00:04:00 | 2021-11-30 00:00:00 |
      | 2021-11-25 00:05:00 | 2021-11-30 00:00:00 |
      | 2021-11-24 00:06:00 | 2021-11-30 00:00:00 |
      | 2021-11-23 00:07:00 | 2021-11-30 00:00:00 |
      | 2021-11-22 00:08:00 | 2021-11-30 00:00:00 |
      | 2021-11-21 00:09:00 | 2021-11-30 00:00:00 |
      | 2021-11-20 00:10:00 | 2021-11-30 00:00:00 |
      +---------------------+---------------------+

MINUTE

  • Sintaksis

    INT MINUTE(DATETIME|TIMESTAMP|STRING <date>)
  • Deskripsi

    Mengembalikan komponen menit dari nilai tanggal. Fungsi ini merupakan bagian dari MaxCompute V2.0.

  • Parameter

    date: wajib. Nilai tanggal dengan tipe DATETIME, TIMESTAMP, atau STRING. Nilai tanggal berada dalam format yyyy-mm-dd hh:mi:ss atau yyyy-mm-dd hh:mi:ss.ff3.

  • Nilai Pengembalian

    Nilai dengan tipe INT dikembalikan. Nilai pengembalian bervariasi berdasarkan aturan berikut:

    • Jika nilai dari date bukan bertipe DATETIME, TIMESTAMP, atau STRING atau formatnya tidak memenuhi persyaratan, null dikembalikan.

    • Jika nilai dari date adalah null, null dikembalikan.

  • Contoh

    • Contoh data statis

      -- Nilai pengembalian adalah 30.  
      SELECT MINUTE('2014-09-01 12:30:00'); 
      
      -- Nilai pengembalian adalah 30. 
      SELECT MINUTE('12:30:00');
      
      -- Nilai pengembalian adalah NULL. 
      SELECT MINUTE('20140901120000');
      
      -- Nilai pengembalian adalah NULL. 
      SELECT MINUTE(null);
    • Contoh data tabel

      Mendapatkan komponen menit dari nilai tanggal di kolom datetime1 dan timestamp1. Data dalam Data Contoh digunakan dalam contoh ini. Pernyataan contoh:

      -- Aktifkan edisi tipe data MaxCompute V2.0. Kirim pernyataan SET berikut bersama dengan pernyataan SQL. 
      SET odps.sql.type.system.odps2=true;
      SELECT datetime1, 
             MINUTE(datetime1) AS datetime1_minute, 
             timestamp1, 
             MINUTE(timestamp1) AS timestamp1_minute 
        FROM mf_date_fun_t;

      Hasil berikut dikembalikan.

      +---------------------+------------------+-------------------------------+-------------------+
      | datetime1           | datetime1_minute | timestamp1                    | timestamp1_minute |
      +---------------------+------------------+-------------------------------+-------------------+
      | 2021-11-29 00:01:00 | 1                | 2021-01-11 00:00:00.123456789 | 0                 |
      | 2021-11-28 00:02:00 | 2                | 2021-02-11 00:00:00.123456789 | 0                 |
      | 2021-11-27 00:03:00 | 3                | 2021-03-11 00:00:00.123456789 | 0                 |
      | 2021-11-26 00:04:00 | 4                | 2021-04-11 00:00:00.123456789 | 0                 |
      | 2021-11-25 00:05:00 | 5                | 2021-05-11 00:00:00.123456789 | 0                 |
      | 2021-11-24 00:06:00 | 6                | 2021-06-11 00:00:00.123456789 | 0                 |
      | 2021-11-23 00:07:00 | 7                | 2021-07-11 00:00:00.123456789 | 0                 |
      | 2021-11-22 00:08:00 | 8                | 2021-08-11 00:00:00.123456789 | 0                 |
      | 2021-11-21 00:09:00 | 9                | 2021-09-11 00:00:00.123456789 | 0                 |
      | 2021-11-20 00:10:00 | 10               | 2021-10-11 00:00:00.123456789 | 0                 |
      +---------------------+------------------+-------------------------------+-------------------+

BULAN

  • Sintaksis

    INT MONTH(DATETIME|TIMESTAMP|DATE|STRING <date>) 
  • Deskripsi

    Mengembalikan bulan di mana nilai tanggal jatuh. Fungsi ini merupakan bagian dari MaxCompute V2.0.

  • Parameter

    date: wajib. Nilai tanggal dengan tipe DATETIME, TIMESTAMP, DATE, atau STRING. Nilai input berada dalam format yyyy-mm-dd, yyyy-mm-dd hh:mi:ss, atau yyyy-mm-dd hh:mi:ss:ff3. Jika nilainya bertipe STRING, nilai tersebut harus mencakup setidaknya bagian yyyy-mm-dd dan tidak boleh mengandung string tambahan.

  • Nilai Pengembalian

    Nilai dengan tipe INT dikembalikan. Nilai pengembalian bervariasi berdasarkan aturan berikut:

    • Jika nilai dari date bukan bertipe DATETIME, TIMESTAMP, DATE, atau STRING atau formatnya tidak memenuhi persyaratan, null dikembalikan.

    • Jika nilai dari date adalah null, null dikembalikan.

  • Contoh

    • Contoh data statis

      -- Nilai pengembalian adalah 9.  
      SELECT MONTH('2014-09-01');
      
      -- Nilai pengembalian adalah NULL. 
      SELECT MONTH('20140901');
      
      -- Nilai pengembalian adalah NULL. 
      SELECT MONTH(null);
    • Contoh data tabel

      Dapatkan komponen bulan dari setiap nilai tanggal di kolom date1, datetime1, timestamp1, dan date3. Data dalam Data Contoh digunakan dalam contoh ini. Pernyataan contoh:

      -- Aktifkan edisi tipe data MaxCompute V2.0. Kirim pernyataan SET berikut bersama dengan pernyataan SQL.  
      SET odps.sql.type.system.odps2=true;
      SELECT date1, 
             MONTH(date1) AS date1_month, 
             datetime1, 
             MONTH(datetime1) AS datetime1_month, 
             timestamp1, 
             MONTH(timestamp1) AS timestamp1_month, 
             date3, 
             MONTH(date3) AS date3_month 
        FROM mf_date_fun_t;

      Hasil berikut dikembalikan.

      +------------+-------------+---------------------+-----------------+-------------------------------+------------------+------------+-------------+
      | date1      | date1_month | datetime1           | datetime1_month | timestamp1                    | timestamp1_month | date3      | date3_month |
      +------------+-------------+---------------------+-----------------+-------------------------------+------------------+------------+-------------+
      | 2021-11-29 | 11          | 2021-11-29 00:01:00 | 11              | 2021-01-11 00:00:00.123456789 | 1                | 2021-11-20 | 11          |
      | 2021-11-28 | 11          | 2021-11-28 00:02:00 | 11              | 2021-02-11 00:00:00.123456789 | 2                | 2021-11-21 | 11          |
      | 2021-11-27 | 11          | 2021-11-27 00:03:00 | 11              | 2021-03-11 00:00:00.123456789 | 3                | 2021-11-22 | 11          |
      | 2021-11-26 | 11          | 2021-11-26 00:04:00 | 11              | 2021-04-11 00:00:00.123456789 | 4                | 2021-11-23 | 11          |
      | 2021-11-25 | 11          | 2021-11-25 00:05:00 | 11              | 2021-05-11 00:00:00.123456789 | 5                | 2021-11-24 | 11          |
      | 2021-11-24 | 11          | 2021-11-24 00:06:00 | 11              | 2021-06-11 00:00:00.123456789 | 6                | 2021-11-25 | 11          |
      | 2021-11-23 | 11          | 2021-11-23 00:07:00 | 11              | 2021-07-11 00:00:00.123456789 | 7                | 2021-11-26 | 11          |
      | 2021-11-22 | 11          | 2021-11-22 00:08:00 | 11              | 2021-08-11 00:00:00.123456789 | 8                | 2021-11-27 | 11          |
      | 2021-11-21 | 11          | 2021-11-21 00:09:00 | 11              | 2021-09-11 00:00:00.123456789 | 9                | 2021-11-28 | 11          |
      | 2021-11-20 | 11          | 2021-11-20 00:10:00 | 11              | 2021-10-11 00:00:00.123456789 | 10               | 2021-11-29 | 11          |
      +------------+-------------+---------------------+-----------------+-------------------------------+------------------+------------+-------------+

MONTHS_BETWEEN

  • Sintaksis

    DOUBLE MONTHS_BETWEEN(DATETIME|TIMESTAMP|DATE|STRING <date1>, DATETIME|TIMESTAMP|DATE|STRING <date2>) 
  • Deskripsi

    Mengembalikan jumlah bulan antara date1 dan date2. Fungsi ini merupakan bagian dari MaxCompute V2.0.

  • Parameter

    date1 dan date2: wajib. Nilai bertipe DATETIME, TIMESTAMP, DATE, atau STRING. Nilai input berada dalam format yyyy-mm-dd, yyyy-mm-dd hh:mi:ss, yyyy-mm-dd hh:mi:ss.ff3. Jika nilai input bertipe STRING, nilai tersebut harus mencakup setidaknya bagian yyyy-mm-dd dan tidak boleh mengandung string tambahan.

  • Nilai Kembali

    Nilai bertipe DOUBLE dikembalikan. Nilai kembali bervariasi berdasarkan aturan berikut:

    • Jika date1 lebih akhir daripada date2, nilai positif dikembalikan. Jika date2 lebih akhir daripada date1, nilai negatif dikembalikan.

    • Jika date1 dan date2 sesuai dengan hari terakhir dari dua bulan, nilai kembali adalah bilangan bulat yang mewakili jumlah bulan. Sebaliknya, nilai kembali dihitung menggunakan rumus berikut: (date1 - date2)/31.

    • Jika nilai date1 atau date2 adalah null, null dikembalikan.

  • Contoh

    • Contoh data statis

      -- Nilai kembali adalah 3.9495967741935485.  
      SELECT MONTHS_BETWEEN('1997-02-28 10:30:00', '1996-10-30');
      
      -- Nilai kembali adalah -3.9495967741935485. 
      SELECT MONTHS_BETWEEN('1996-10-30','1997-02-28 10:30:00' );
      
      -- Nilai kembali adalah -3.0. 
      SELECT MONTHS_BETWEEN('1996-09-30','1996-12-31');
      
      -- Nilai kembali adalah NULL. 
      SELECT MONTHS_BETWEEN('1996-09-30', null);
    • Contoh data tabel

      Hitung jumlah bulan antara nilai tanggal pada kolom timestamp1 dan timestamp2. Data dalam Data Sampel digunakan dalam contoh ini. Pernyataan sampel:

      -- Aktifkan edisi tipe data MaxCompute V2.0. Kirimkan pernyataan SET berikut bersama dengan pernyataan SQL. 
      SET odps.sql.type.system.odps2=true; 
      SELECT timestamp1, timestamp2, MONTHS_BETWEEN(timestamp1, timestamp2) FROM mf_date_fun_t;

      Hasil berikut dikembalikan.

      +-------------------------------+-------------------------------+------------+
      | timestamp1                    | timestamp2                    | _c2        |
      +-------------------------------+-------------------------------+------------+
      | 2021-01-11 00:00:00.123456789 | 2021-10-11 00:00:00.123456789 | -9.0       |
      | 2021-02-11 00:00:00.123456789 | 2021-10-11 00:00:00.123456789 | -8.0       |
      | 2021-03-11 00:00:00.123456789 | 2021-10-11 00:00:00.123456789 | -7.0       |
      | 2021-04-11 00:00:00.123456789 | 2021-10-11 00:00:00.123456789 | -6.0       |
      | 2021-05-11 00:00:00.123456789 | 2021-10-11 00:00:00.123456789 | -5.0       |
      | 2021-06-11 00:00:00.123456789 | 2021-10-11 00:00:00.123456789 | -4.0       |
      | 2021-07-11 00:00:00.123456789 | 2021-10-11 00:00:00.123456789 | -3.0       |
      | 2021-08-11 00:00:00.123456789 | 2021-10-11 00:00:00.123456789 | -2.0       |
      | 2021-09-11 00:00:00.123456789 | 2021-10-11 00:00:00.123456789 | -1.0       |
      | 2021-10-11 00:00:00.123456789 | 2021-10-11 00:00:00.123456789 | 0.0        |
      +------------+------------+------------+

NEXT_DAY

  • Sintaksis

    STRING NEXT_DAY(TIMESTAMP|DATE|DATETIME|STRING <startdate>, STRING <week>)
  • Deskripsi

    Mengembalikan tanggal hari pertama yang lebih lambat dari startdate dan sesuai dengan nilai week. Tanggal hari tertentu di minggu berikutnya dikembalikan. Fungsi ini merupakan bagian dari MaxCompute V2.0.

  • Parameter

    Parameter

    Diperlukan

    Deskripsi

    startdate

    Ya

    Nilai tanggal bertipe DATE, DATETIME, TIMESTAMP, atau STRING. Nilai input dalam format yyyy-mm-dd, yyyy-mm-dd hh:mi:ss, atau yyyy-mm-dd hh:mi:ss.ff3. Jika nilainya bertipe STRING, nilai tersebut harus mencakup setidaknya bagian yyyy-mm-dd dan tidak boleh mengandung string tambahan.

    week

    Ya

    Nilai bertipe STRING. Nilai parameter ini dapat berupa dua atau tiga huruf pertama dari nama hari dalam seminggu atau nama lengkap hari tersebut, seperti MO, TUE, atau FRIDAY.

  • Nilai Kembali

    Nilai bertipe STRING dikembalikan. Nilai kembali dalam format yyyy-mm-dd. Nilai kembali bervariasi berdasarkan aturan berikut:

    • Jika nilai date bukan bertipe TIMESTAMP, DATE, DATETIME, atau STRING atau formatnya tidak memenuhi persyaratan, null dikembalikan.

    • Jika nilai date adalah null, kesalahan dikembalikan.

    • Jika nilai week adalah null, null dikembalikan.

  • Contoh

    • Contoh data statis

      -- Nilai kembali adalah 2017-08-08.  
      SELECT NEXT_DAY('2017-08-01','TU');
      
      -- Nilai kembali adalah 2017-08-08. 
      SELECT NEXT_DAY('2017-08-01 23:34:00', 'TU');
      
      -- Nilai kembali adalah NULL. 
      SELECT NEXT_DAY('20170801','TU');
      
      -- Nilai kembali adalah NULL. 
      SELECT NEXT_DAY('2017-08-01 23:34:00', null);
    • Contoh data tabel

      Mendapatkan tanggal hari di minggu berikutnya yang sesuai dengan setiap nilai tanggal di kolom date1, datetime1, timestamp1, dan date3. Data dalam Data Contoh digunakan dalam contoh ini. Pernyataan contoh:

      -- Aktifkan edisi tipe data MaxCompute V2.0. Kirim pernyataan SET berikut bersama dengan pernyataan SQL.  
      SET odps.sql.type.system.odps2=true;
      SELECT date1, 
             NEXT_DAY(date1,'MON') AS date1_next_day, 
             datetime1, 
             NEXT_DAY(datetime1,'TUE') AS datetime1_next_day, 
             timestamp1, 
             NEXT_DAY(timestamp1,'WED') AS timestamp1_next_day, 
             date3, 
             NEXT_DAY(date3,'THU') AS date3_next_day 
        FROM mf_date_fun_t;

      Hasil berikut dikembalikan.

      +------------+----------------+---------------------+--------------------+-------------------------------+---------------------+------------+----------------+
      | date1      | date1_next_day | datetime1           | datetime1_next_day | timestamp1                    | timestamp1_next_day | date3      | date3_next_day |
      +------------+----------------+---------------------+--------------------+-------------------------------+---------------------+------------+----------------+
      | 2021-11-29 | 2021-12-06     | 2021-11-29 00:01:00 | 2021-11-30         | 2021-01-11 00:00:00.123456789 | 2021-01-13          | 2021-11-20 | 2021-11-25     |
      | 2021-11-28 | 2021-11-29     | 2021-11-28 00:02:00 | 2021-11-30         | 2021-02-11 00:00:00.123456789 | 2021-02-17          | 2021-11-21 | 2021-11-25     |
      | 2021-11-27 | 2021-11-29     | 2021-11-27 00:03:00 | 2021-11-30         | 2021-03-11 00:00:00.123456789 | 2021-03-17          | 2021-11-22 | 2021-11-25     |
      | 2021-11-26 | 2021-11-29     | 2021-11-26 00:04:00 | 2021-11-30         | 2021-04-11 00:00:00.123456789 | 2021-04-14          | 2021-11-23 | 2021-11-25     |
      | 2021-11-25 | 2021-11-29     | 2021-11-25 00:05:00 | 2021-11-30         | 2021-05-11 00:00:00.123456789 | 2021-05-12          | 2021-11-24 | 2021-11-25     |
      | 2021-11-24 | 2021-11-29     | 2021-11-24 00:06:00 | 2021-11-30         | 2021-06-11 00:00:00.123456789 | 2021-06-16          | 2021-11-25 | 2021-12-02     |
      | 2021-11-23 | 2021-11-29     | 2021-11-23 00:07:00 | 2021-11-30         | 2021-07-11 00:00:00.123456789 | 2021-07-14          | 2021-11-26 | 2021-12-02     |
      | 2021-11-22 | 2021-11-29     | 2021-11-22 00:08:00 | 2021-11-23         | 2021-08-11 00:00:00.123456789 | 2021-08-18          | 2021-11-27 | 2021-12-02     |
      | 2021-11-21 | 2021-11-22     | 2021-11-21 00:09:00 | 2021-11-23         | 2021-09-11 00:00:00.123456789 | 2021-09-15          | 2021-11-28 | 2021-12-02     |
      | 2021-11-20 | 2021-11-22     | 2021-11-20 00:10:00 | 2021-11-23         | 2021-10-11 00:00:00.123456789 | 2021-10-13          | 2021-11-29 | 2021-12-02     |
      +------------+----------------+---------------------+--------------------+-------------------------------+---------------------+------------+----------------+

NOW

  • Sintaksis

    DATETIME NOW()
  • Deskripsi

    Mengembalikan tanggal dan waktu sistem saat ini.

  • Nilai Pengembalian

    Nilai dengan tipe DATETIME dikembalikan. Nilai kembali berada dalam format yyyy-mm-dd hh:mi:ss.SSS.

  • Contoh

    • Tidak ada format yang ditentukan. Bagian milidetik dalam nilai yang dikembalikan dapat mencakup 1, 2, atau 3 digit.

      SELECT NOW(); 

      Hasil berikut dikembalikan.

      +------+
      | _c0  |
      +------+
      | 2023-06-13 10:53:24.967 |
      +------+
    • Format waktu ditentukan.

      SELECT  DATE_FORMAT(NOW(),'yyyy-MM-dd hh:mi:ss.SSS'); 

      Hasil berikut dikembalikan.

      +-----+
      | _c0 |
      +-----+
      | 2023-06-13 10:53:53.899 |
      +-----+

QUARTER

  • Sintaksis

    INT QUARTER(DATETIME|TIMESTAMP|DATE|STRING <date>) 
  • Deskripsi

    Mengembalikan kuartal di mana nilai tanggal berada. Nilai yang valid: 1 hingga 4. Fungsi ini merupakan bagian dari MaxCompute V2.0.

  • Parameter

    date: wajib. Nilai tanggal dengan tipe DATETIME, TIMESTAMP, DATE, atau STRING. Nilai input berada dalam format yyyy-mm-dd, yyyy-mm-dd hh:mi:ss, atau yyyy-mm-dd hh:mi:ss:ff3. Jika nilainya bertipe STRING, nilai tersebut harus mencakup setidaknya bagian yyyy-mm-dd dan tidak boleh mengandung string tambahan.

  • Nilai Pengembalian

    Nilai dengan tipe INT dikembalikan. Nilai pengembalian bervariasi berdasarkan aturan berikut:

    • Jika nilai dari date bukan bertipe DATETIME, TIMESTAMP, DATE, atau STRING atau formatnya tidak memenuhi persyaratan, null dikembalikan.

    • Jika nilai dari date adalah null, null dikembalikan.

  • Contoh

    • Contoh data statis

      -- Nilai pengembalian adalah 4.  
      SELECT QUARTER('1970-11-12 10:00:00');
      
      -- Nilai pengembalian adalah 4. 
      SELECT QUARTER('1970-11-12');
      
      -- Nilai pengembalian adalah NULL. 
      SELECT QUARTER(null);
    • Contoh data tabel

      Mendapatkan kuartal di mana setiap nilai tanggal dalam kolom date1, datetime1, timestamp1, dan date3 berada. Data dalam Data Contoh digunakan dalam contoh ini. Pernyataan contoh:

      -- Aktifkan edisi tipe data MaxCompute V2.0. Kirimkan pernyataan SET berikut bersama dengan pernyataan SQL.  
      SET odps.sql.type.system.odps2=true;
      SELECT date1, 
             QUARTER(date1) AS date1_quarter, 
             datetime1, 
             QUARTER(datetime1) AS datetime1_quarter, 
             timestamp1, 
             QUARTER(timestamp1) AS timestamp1_quarter, 
             date3, 
             QUARTER(date3) AS date3_quarter 
        FROM mf_date_fun_t;

      Hasil berikut dikembalikan.

      +------------+---------------+---------------------+-------------------+-------------------------------+--------------------+------------+---------------+
      | date1      | date1_quarter | datetime1           | datetime1_quarter | timestamp1                    | timestamp1_quarter | date3      | date3_quarter |
      +------------+---------------+---------------------+-------------------+-------------------------------+--------------------+------------+---------------+
      | 2021-11-29 | 4             | 2021-11-29 00:01:00 | 4                 | 2021-01-11 00:00:00.123456789 | 1                  | 2021-11-20 | 4             |
      | 2021-11-28 | 4             | 2021-11-28 00:02:00 | 4                 | 2021-02-11 00:00:00.123456789 | 1                  | 2021-11-21 | 4             |
      | 2021-11-27 | 4             | 2021-11-27 00:03:00 | 4                 | 2021-03-11 00:00:00.123456789 | 1                  | 2021-11-22 | 4             |
      | 2021-11-26 | 4             | 2021-11-26 00:04:00 | 4                 | 2021-04-11 00:00:00.123456789 | 2                  | 2021-11-23 | 4             |
      | 2021-11-25 | 4             | 2021-11-25 00:05:00 | 4                 | 2021-05-11 00:00:00.123456789 | 2                  | 2021-11-24 | 4             |
      | 2021-11-24 | 4             | 2021-11-24 00:06:00 | 4                 | 2021-06-11 00:00:00.123456789 | 2                  | 2021-11-25 | 4             |
      | 2021-11-23 | 4             | 2021-11-23 00:07:00 | 4                 | 2021-07-11 00:00:00.123456789 | 3                  | 2021-11-26 | 4             |
      | 2021-11-22 | 4             | 2021-11-22 00:08:00 | 4                 | 2021-08-11 00:00:00.123456789 | 3                  | 2021-11-27 | 4             |
      | 2021-11-21 | 4             | 2021-11-21 00:09:00 | 4                 | 2021-09-11 00:00:00.123456789 | 3                  | 2021-11-28 | 4             |
      | 2021-11-20 | 4             | 2021-11-20 00:10:00 | 4                 | 2021-10-11 00:00:00.123456789 | 4                  | 2021-11-29 | 4             |
      +------------+---------------+---------------------+-------------------+-------------------------------+--------------------+------------+---------------+

KEDUA

  • Sintaksis

    INT SECOND(DATETIME|TIMESTAMP|STRING <date>)
  • Deskripsi

    Mengembalikan komponen detik dari nilai tanggal. Fungsi ini merupakan bagian dari MaxCompute V2.0.

  • Parameter

    date: wajib. Nilai tanggal dengan tipe DATETIME, TIMESTAMP, atau STRING. Nilai tanggal berada dalam format yyyy-mm-dd hh:mi:ss atau yyyy-mm-dd hh:mi:ss.ff3.

  • Nilai Kembali

    Nilai dengan tipe INT dikembalikan. Nilai kembali bervariasi berdasarkan aturan berikut:

    • Jika nilai dari date bukan bertipe DATETIME, TIMESTAMP, atau STRING atau formatnya tidak memenuhi persyaratan, null dikembalikan.

    • Jika nilai dari date adalah null, null dikembalikan.

  • Contoh

    • Contoh data statis

      -- Nilai kembali adalah 45.  
      SELECT SECOND('2014-09-01 12:30:45');
      
      -- Nilai kembali adalah 45. 
      SELECT SECOND('12:30:45');
      
      -- Nilai kembali adalah NULL. 
      SELECT SECOND('20140901123045');
      
      -- Nilai kembali adalah NULL. 
      SELECT SECOND(null);
    • Contoh data tabel

      Mendapatkan komponen detik dari nilai tanggal di kolom datetime1 dan timestamp1. Data dalam Data Contoh digunakan dalam contoh ini. Pernyataan contoh:

      -- Aktifkan edisi tipe data MaxCompute V2.0. Kirim pernyataan SET berikut bersama dengan pernyataan SQL.  
      SET odps.sql.type.system.odps2=true;
      SELECT datetime1, 
             SECOND(datetime1) AS datetime1_second, 
             timestamp1, 
             SECOND(timestamp1) AS timestamp1_second 
        FROM mf_date_fun_t;

      Hasil berikut dikembalikan.

      +---------------------+------------------+-------------------------------+-------------------+
      | datetime1           | datetime1_second | timestamp1                    | timestamp1_second |
      +---------------------+------------------+-------------------------------+-------------------+
      | 2021-11-29 00:01:00 | 0                | 2021-01-11 00:00:00.123456789 | 0                 |
      | 2021-11-28 00:02:00 | 0                | 2021-02-11 00:00:00.123456789 | 0                 |
      | 2021-11-27 00:03:00 | 0                | 2021-03-11 00:00:00.123456789 | 0                 |
      | 2021-11-26 00:04:00 | 0                | 2021-04-11 00:00:00.123456789 | 0                 |
      | 2021-11-25 00:05:00 | 0                | 2021-05-11 00:00:00.123456789 | 0                 |
      | 2021-11-24 00:06:00 | 0                | 2021-06-11 00:00:00.123456789 | 0                 |
      | 2021-11-23 00:07:00 | 0                | 2021-07-11 00:00:00.123456789 | 0                 |
      | 2021-11-22 00:08:00 | 0                | 2021-08-11 00:00:00.123456789 | 0                 |
      | 2021-11-21 00:09:00 | 0                | 2021-09-11 00:00:00.123456789 | 0                 |
      | 2021-11-20 00:10:00 | 0                | 2021-10-11 00:00:00.123456789 | 0                 |
      +---------------------+------------------+-------------------------------+-------------------+

TO_CHAR

  • Sintaksis

    STRING TO_CHAR(DATETIME <date>, STRING <format>) 
  • Deskripsi

    Mengonversi nilai tanggal tipe DATETIME menjadi string dalam format tertentu.

  • Parameter

    Parameter

    Diperlukan

    Deskripsi

    date

    Ya

    Nilai tanggal tipe DATETIME. Nilai tanggal berada dalam format yyyy-mm-dd hh:mi:ss. Jika nilai input adalah tipe STRING dan edisi tipe data MaxCompute V1.0 digunakan dalam proyek Anda, nilai input secara implisit dikonversi ke tipe DATETIME sebelum perhitungan.

    format

    Ya

    Konstanta tipe STRING. Dalam nilai format, bagian format tanggal diganti dengan data terkait dan karakter lainnya tetap tidak berubah dalam output.

  • Nilai Kembali

    Nilai bertipe STRING dikembalikan. Nilai kembali bervariasi berdasarkan aturan berikut:

    • Jika nilai date bukan bertipe DATETIME atau STRING, kesalahan dikembalikan.

    • Jika nilai date adalah null, kesalahan dikembalikan.

    • Jika nilai format adalah null, null dikembalikan.

  • Contoh

    • Contoh data statis

      • Contoh 1

        --Jika klien MaxCompute berjalan di Windows, karakter Cina mungkin tidak ditampilkan dengan benar dalam hasil yang dikembalikan. 
        SELECT TO_CHAR(DATETIME '2010-12-03 00:00:00','Alibaba Finance yyyy-mm*dd');

        Hasil berikut dikembalikan.

        +------------+
        | _c0        |
        +------------+
        | Alibaba Finance 2010-12*03 |
        +------------+
      • Contoh 2

        SELECT TO_CHAR(DATETIME '2008-07-18 00:00:00','yyyymmdd'); 

        Hasil berikut dikembalikan.

        +------------+
        | _c0        |
        +------------+
        | 20080718   |
        +------------+
      • Contoh 3

        SET odps.sql.type.system.odps2=false; 
        SELECT TO_CHAR('2008-07-18 00:00:00', 'yyyymmdd');

        Hasil berikut dikembalikan.

        +------------+
        | _c0        |
        +------------+
        | 20080718   |
        +------------+
      • Contoh 4

        -- 'Alibaba 2010-12*3' tidak dapat dikonversi menjadi nilai tanggal standar, dan kesalahan dikembalikan.  
        SELECT TO_CHAR(DATETIME 'Alibaba 2010-12*3', 'Alibaba yyyy-mm*dd');
      • Contoh 5

        --'20102401' bukan nilai tanggal standar, dan kesalahan dikembalikan.  
        SELECT TO_CHAR(DATETIME '20102401', 'yyyy');
      • Contoh 6

        SELECT TO_CHAR(DATETIME '2010-12-03 00:00:00', null); 

        Hasil berikut dikembalikan.

        +------------+
        | _c0        |
        +------------+
        | NULL       |
        +------------+
    • Contoh data tabel

      Konversikan nilai tanggal di kolom datetime1 menjadi string dalam format tertentu. Data dalam Data Contoh digunakan dalam contoh ini. Pernyataan sampel:

      SELECT  datetime1, TO_CHAR(datetime1,'yyyy-mm-dd') AS datetime1_to_char
      FROM mf_date_fun_t; 

      Hasil berikut dikembalikan.

      +---------------------+-------------------+
      | datetime1           | datetime1_to_char |
      +---------------------+-------------------+
      | 2021-11-29 00:01:00 | 2021-11-29        |
      | 2021-11-28 00:02:00 | 2021-11-28        |
      | 2021-11-27 00:03:00 | 2021-11-27        |
      | 2021-11-26 00:04:00 | 2021-11-26        |
      | 2021-11-25 00:05:00 | 2021-11-25        |
      | 2021-11-24 00:06:00 | 2021-11-24        |
      | 2021-11-23 00:07:00 | 2021-11-23        |
      | 2021-11-22 00:08:00 | 2021-11-22        |
      | 2021-11-21 00:09:00 | 2021-11-21        |
      | 2021-11-20 00:10:00 | 2021-11-20        |
      +---------------------+-------------------+

TO_DATE

  • Sintaksis

    DATETIME|DATE TO_DATE(STRING <date>[, STRING <format>])
  • Deskripsi

    tanggal dalam format tertentu.

  • Parameter

    Parameter

    Diperlukan

    Deskripsi

    date

    Ya

    Nilai tanggal bertipe STRING. Parameter ini menentukan string tanggal yang ingin Anda konversi. Jika nilai input bertipe BIGINT, DOUBLE, DECIMAL, atau DATETIME, nilai tersebut akan dikonversi secara implisit ke nilai bertipe STRING sebelum perhitungan. String tanggal juga dapat berada dalam format ISO 8601.

    format

    Tidak

    • Konstanta bertipe STRING. Parameter ini menentukan format tanggal. format tidak mendukung EDTF. Karakter lain diabaikan sebagai karakter tidak valid selama penguraian.

    • Nilai tersebut harus berisi yyyy. Jika tidak, NULL akan dikembalikan. Jika terdapat string format tambahan dalam format, fungsi ini mengonversi string tanggal yang sesuai dengan string format pertama menjadi nilai tanggal. Sisanya dianggap sebagai pemisah. Sebagai contoh, TO_DATE("1234-2234", "yyyy-yyyy") mengembalikan 1234-01-01 00:00:00.

    • yyyy menunjukkan tahun 4 digit. mm menunjukkan bulan 2 digit. dd menunjukkan hari 2 digit. hh menunjukkan jam berdasarkan sistem 24 jam. mi menunjukkan menit 2 digit. ss menunjukkan detik 2 digit. ff3 menunjukkan milidetik 3 digit.

  • Nilai Kembali

    Nilai bertipe DATE atau DATETIME dikembalikan.

    • Jika parameter format tidak termasuk dalam parameter input dan string yang perlu dikonversi berada dalam format yyyy-mm-dd atau yyyy-mm-dd hh:mi:ss, nilai dengan tipe DATE dalam format yyyy-mm-dd akan dikembalikan. Namun, jika parameter format tidak termasuk dalam parameter input dan string yang perlu dikonversi tidak dalam format yyyy-mm-dd atau yyyy-mm-dd hh:mi:ss, maka null akan dikembalikan.

    • Jika parameter format termasuk dalam parameter input, nilai dengan tipe DATETIME dalam format yyyy-mm-dd hh:mi:ss akan dikembalikan. Jika nilai dari date atau format adalah null, null akan dikembalikan.

  • Contoh

    • Contoh data statis

      -- Nilai kembali adalah 2010-12-03 00:00:00.  
      SELECT TO_DATE('Alibaba 2010-12*03', 'Alibaba yyyy-mm*dd');
      
      -- Nilai kembali adalah 2008-07-18 00:00:00. 
      SELECT TO_DATE('20080718', 'yyyymmdd');
      
      -- Nilai kembali adalah 2008-07-18 20:30:00. 
      SELECT TO_DATE('200807182030','yyyymmddhhmi');
      
      -- '2008718' tidak dapat dikonversi menjadi nilai tanggal standar, dan kesalahan dikembalikan. Nilai harus ditulis sebagai '20080718'. 
      SELECT TO_DATE('2008718', 'yyyymmdd');
      
      -- 'Alibaba 2010-12*3' tidak dapat dikonversi menjadi nilai tanggal standar, dan kesalahan dikembalikan. Nilai harus ditulis sebagai 'Alibaba 2010-12*03'. 
      SELECT TO_DATE('Alibaba 2010-12*3', 'Alibaba yyyy-mm*dd');
      
      -- '2010-24-01' tidak dapat dikonversi menjadi nilai tanggal standar, dan kesalahan dikembalikan. Nilai harus ditulis sebagai '2010-01-24'. 
      SELECT TO_DATE('2010-24-01', 'yyyy-mm-dd');
      
      -- Nilai kembali adalah 2018-10-30 15:13:12. 
      SELECT TO_DATE('20181030 15-13-12.345','yyyymmdd hh-mi-ss.ff3');
      
      -- Nilai kembali adalah NULL. 
      SELECT TO_DATE(null,'yyyymmdd hh-mi-ss.ff3');
      
      -- Nilai kembali adalah NULL. 
      SELECT TO_DATE('20181030 15-13-12.345', null);
      
      -- Jika nilai input berada dalam format ISO 8601, nilai kembali adalah 2021-09-24 13:39:34. 
      SELECT TO_DATE('2021-09-24T13:39:34.119Z', 'yyyy-MM-ddThh:mi:ss.ff3Z');
      
      -- Nilai kembali adalah 2021-09-24, dan tipe datanya adalah DATE. 
      SELECT TO_DATE('2021-09-24');
      
      -- Nilai kembali adalah 2021-09-24, dan tipe datanya adalah DATE. 
      SELECT TO_DATE('2021-09-24 13:39:34');
      
      -- Nilai kembali adalah NULL. 
      SELECT TO_DATE('20210924');
    • Contoh data tabel

      Konversikan nilai tanggal pada kolom date3 menjadi format tanggal tertentu. Data dalam Data sampel digunakan untuk contoh ini. Pernyataan sampel:

      SELECT date3, TO_DATE(date3, 'yyyy-mm-dd') AS date3_to_date FROM mf_date_fun_t; 

      Hasil berikut diperoleh:

      +------------+---------------------+
      | date3      | date3_to_date       |
      +------------+---------------------+
      | 2021-11-20 | 2021-11-20 00:00:00 |
      | 2021-11-21 | 2021-11-21 00:00:00 |
      | 2021-11-22 | 2021-11-22 00:00:00 |
      | 2021-11-23 | 2021-11-23 00:00:00 |
      | 2021-11-24 | 2021-11-24 00:00:00 |
      | 2021-11-25 | 2021-11-25 00:00:00 |
      | 2021-11-26 | 2021-11-26 00:00:00 |
      | 2021-11-27 | 2021-11-27 00:00:00 |
      | 2021-11-28 | 2021-11-28 00:00:00 |
      | 2021-11-29 | 2021-11-29 00:00:00 |
      +------------+---------------------+

TO_MILLIS

  • Sintaksis

    BIGINT TO_MILLIS(DATETIME|TIMESTAMP <date>);
  • Deskripsi

    Mengonversi nilai tanggal menjadi timestamp UNIX yang akurat hingga milidetik. Fungsi ini merupakan bagian dari MaxCompute V2.0.

  • Parameter

    tanggal: wajib. Nilai tanggal dengan tipe DATETIME atau TIMESTAMP. Nilai tanggal berada dalam format yyyy-mm-dd hh:mi:ss atau yyyy-mm-dd hh:mi:ss.ff3.

  • Nilai Kembali

    Nilai bertipe BIGINT dikembalikan. Nilai kembali bervariasi berdasarkan aturan berikut:

    • Jika nilai tanggal bukan bertipe DATETIME atau TIMESTAMP, kesalahan akan dikembalikan.

    • Jika nilai tanggal adalah null, kesalahan akan dikembalikan.

  • Contoh

    • Contoh data statis

      -- Nilai kembali adalah 1617174900000.  
      SELECT TO_MILLIS(datetime '2021-03-31 15:15:00');
      
      -- Nilai kembali adalah 1617174900000. 
      SET odps.sql.type.system.odps2=true;
      SELECT TO_MILLIS(timestamp '2021-03-31 15:15:00');
    • Contoh data tabel

      Konversikan nilai tanggal di kolom datetime1 dan timestamp1 menjadi timestamp UNIX yang akurat hingga milidetik. Data dalam Data Sampel digunakan dalam contoh ini. Pernyataan sampel:

      -- Aktifkan edisi tipe data MaxCompute V2.0. Kirim pernyataan SET berikut bersama dengan pernyataan SQL. 
      SET odps.sql.type.system.odps2=true; 
      SELECT datetime1, 
             TO_MILLIS(datetime1) AS datetime1_to_millis, 
             timestamp1, 
             TO_MILLIS(timestamp1) AS timestamp1_to_millis 
        FROM mf_date_fun_t;

      Hasil berikut dikembalikan.

      +---------------------+---------------------+-------------------------------+----------------------+
      | datetime1           | datetime1_to_millis | timestamp1                    | timestamp1_to_millis |
      +---------------------+---------------------+-------------------------------+----------------------+
      | 2021-11-29 00:01:00 | 1638115260000       | 2021-01-11 00:00:00.123456789 | 1610294400123        |
      | 2021-11-28 00:02:00 | 1638028920000       | 2021-02-11 00:00:00.123456789 | 1612972800123        |
      | 2021-11-27 00:03:00 | 1637942580000       | 2021-03-11 00:00:00.123456789 | 1615392000123        |
      | 2021-11-26 00:04:00 | 1637856240000       | 2021-04-11 00:00:00.123456789 | 1618070400123        |
      | 2021-11-25 00:05:00 | 1637769900000       | 2021-05-11 00:00:00.123456789 | 1620662400123        |
      | 2021-11-24 00:06:00 | 1637683560000       | 2021-06-11 00:00:00.123456789 | 1623340800123        |
      | 2021-11-23 00:07:00 | 1637597220000       | 2021-07-11 00:00:00.123456789 | 1625932800123        |
      | 2021-11-22 00:08:00 | 1637510880000       | 2021-08-11 00:00:00.123456789 | 1628611200123        |
      | 2021-11-21 00:09:00 | 1637424540000       | 2021-09-11 00:00:00.123456789 | 1631289600123        |
      | 2021-11-20 00:10:00 | 1637338200000       | 2021-10-11 00:00:00.123456789 | 1633881600123        |
      +---------------------+---------------------+-------------------------------+----------------------+

TRUNC_TIME

  • Format Perintah

    string TRUNC_TIME(date|datetime|timestamp|timestamp_ntz <date>, string <datepart>)
  • Deskripsi

    Memotong data tipe tanggal atau waktu sesuai dengan unit waktu yang ditentukan oleh datepart dan mengembalikan data tipe STRING.

  • Parameter

    • date: Diperlukan. Mendukung tipe DATE, DATETIME, TIMESTAMP, atau TIMESTAMP_NTZ. Jika input adalah tipe STRING dan versi tipe data dari proyek MaxCompute adalah 1.0, maka akan dikonversi secara implisit ke tipe DATETIME sebelum perhitungan.

    • datepart: Diperlukan. Konstanta tipe STRING, tidak peka huruf besar/kecil, mendukung year, month, day, dan hour.

  • Nilai Kembali

    Mengembalikan tipe STRING.

    Format STRING adalah sebagai berikut:

    • Ketika datepart adalah 'year': Mengembalikan format STRING yyyy.

    • Ketika datepart adalah 'month': Mengembalikan format STRING yyyy-mm.

    • Ketika datepart adalah 'day': Mengembalikan format STRING yyyy-mm-dd.

    • Ketika datepart adalah 'hour': Mengembalikan format STRING yyyy-mm-dd hh:mm:ss.

    Aturan Pengembalian:

    • Ketika date bukan tipe DATE, DATETIME, TIMESTAMP, atau TIMESTAMP_NTZ, kesalahan akan dikembalikan. Tipe STRING untuk date hanya didukung ketika versi tipe data dari proyek MaxCompute adalah 1.0.

    • Ketika datepart adalah NULL, kesalahan akan dikembalikan.

  • Contoh

    • Waktu sebagai tipe DATETIME

      Sebagai contoh, ketika zona waktu Session atau Project saat ini adalah UTC+8, waktu lokal adalah datetime '2025-06-03 07:15:08', fungsi TRUNC_TIME pertama-tama mengonversi waktu lokal menjadi waktu UTC '2025-06-02 23:15:08', kemudian memotong sesuai dengan datepart, dan mengembalikan hasilnya sebagai tipe STRING.

      SET odps.sql.timezone=Asia/Shanghai;
      SELECT 
             TRUNC_TIME(datetime '2025-06-03 07:15:08','year') as tc_year,
             TRUNC_TIME(datetime '2025-06-03 07:15:08','month') as tc_month,
             TRUNC_TIME(datetime '2025-06-03 07:15:08','day') as tc_date,
             TRUNC_TIME(datetime '2025-06-03 07:15:08','hour') as tc_hour;

      Hasil berikut dikembalikan.

      +------------+------------+------------+------------+
      | tc_year    | tc_month   | tc_date    | tc_hour    |
      +------------+------------+------------+------------+
      | 2025       | 2025-06    | 2025-06-02 | 2025-06-02 23:00:00 |
      +------------+------------+------------+------------+
    • Waktu sebagai tipe DATE

      Sebagai contoh, waktu input adalah date '2025-06-10', fungsi TRUNC_TIME memotong data tipe DATE sesuai dengan unit waktu yang ditentukan oleh datepart, dan mengembalikan tipe STRING.

      SELECT 
             TRUNC_TIME(date '2025-06-10','year' ),
             TRUNC_TIME(date '2025-06-10','month' ),
             TRUNC_TIME(date '2025-06-10','day' );

      Hasil berikut dikembalikan.

      +------------+------------+------------+
      | _c0        | _c1        | _c2        |
      +------------+------------+------------+
      | 2025       | 2025-06    | 2025-06-10 |
      +------------+------------+------------+
    • Waktu sebagai tipe STRING

      Sebagai contoh, waktu input adalah tipe STRING '2025-06-03 15:30:30'. Anda harus menyetel versi tipe data dari proyek MaxCompute ke 1.0 agar dapat dikonversi secara implisit ke tipe DATETIME sebelum perhitungan. Jika tidak, kesalahan akan dikembalikan.

      SET odps.sql.type.system.odps2=false;
      SELECT TRUNC_TIME('2025-06-03 15:30:30','hour');

      Hasil berikut dikembalikan.

      +------------+
      | _c0        |
      +------------+
      | 2025-06-03 07:00:00 |
      +------------+

UNIX_TIMESTAMP

  • Sintaksis

    BIGINT UNIX_TIMESTAMP(DATETIME|DATE|TIMESTAMP|STRING <date>) 
  • Deskripsi

    Mengonversi nilai tanggal menjadi timestamp UNIX yang merupakan bilangan bulat.

  • Parameter

    tanggal: wajib. Nilai tanggal dengan tipe DATETIME, DATE, TIMESTAMP, atau STRING. Format nilai input adalah yyyy-mm-dd hh:mi:ss, yyyy-mm-dd, atau yyyy-mm-dd hh:mi:ss.ff3. Jika nilai input bertipe STRING dan edisi tipe data MaxCompute V1.0 digunakan di proyek Anda, nilai input akan secara implisit dikonversi menjadi tipe DATETIME sebelum perhitungan. Untuk informasi lebih lanjut tentang edisi tipe data MaxCompute V1.0, lihat Edisi tipe data MaxCompute V1.0. Jika Anda mengaktifkan edisi tipe data MaxCompute V2.0, konversi implisit tidak akan berhasil. Dalam hal ini, gunakan fungsi CAST, seperti unix_timestamp(cast(... as datetime)), untuk mengonversi tipe data. Anda juga dapat menonaktifkan edisi tipe data MaxCompute V2.0. Untuk informasi lebih lanjut tentang edisi tipe data MaxCompute V2.0, lihat Sistem tipe data MaxCompute versi 2.0.

    Catatan

    Jika nilai input adalah konstanta dan bukan nilai dalam tabel, nilai input berada dalam format DATETIME'yyyy-mm-dd hh:mi:ss', DATE'yyyy-mm-dd', atau TIMESTAMP'yyyy-mm-dd hh:mi:ss.ff3'. Jika nilai input tidak mengandung kata kunci dari tipe data dan berada dalam format 'yyyy-mm-dd hh:mi:ss', nilai input dikenali sebagai nilai tipe STRING.

  • Nilai Pengembalian

    Timestamp UNIX dengan tipe BIGINT dikembalikan. Nilai pengembalian bervariasi berdasarkan aturan berikut:

    • Jika nilai dari tanggal bukan bertipe DATETIME, DATE, TIMESTAMP, atau STRING atau formatnya tidak memenuhi persyaratan, kesalahan dikembalikan atau null dikembalikan.

    • Jika nilai dari tanggal adalah null, null dikembalikan.

  • Contoh

    • Contoh data statis

      -- Nilai pengembalian adalah 1699585860. 
      SELECT UNIX_TIMESTAMP(DATETIME'2023-11-10 11:11:00'); 
       
      -- Nilai pengembalian adalah 1699545600.
      SET odps.sql.type.system.odps2=true;
      SELECT UNIX_TIMESTAMP(DATE'2023-11-10');
      
      -- Nilai pengembalian adalah 1699585860.
      SET odps.sql.type.system.odps2=true;
      SELECT UNIX_TIMESTAMP(TIMESTAMP'2023-11-10 11:11:00.123456789');
      
      -- Nilai pengembalian adalah 1237518660. 
      SET odps.sql.type.system.odps2=false;
      SELECT UNIX_TIMESTAMP('2009-03-20 11:11:00'); 
      
      -- Nilai pengembalian adalah NULL. 
      SELECT UNIX_TIMESTAMP(null);
    • Contoh data tabel

      Konversikan nilai tanggal di kolom date1, datetime1, dan timestamp1 menjadi timestamp UNIX yang merupakan bilangan bulat. Data dalam Data Contoh digunakan dalam contoh ini. Pernyataan sampel:

      -- Aktifkan edisi tipe data MaxCompute V2.0. Kirimkan pernyataan SET berikut bersama dengan pernyataan SQL.  
      SET odps.sql.type.system.odps2=true;
      SELECT date1, 
             UNIX_TIMESTAMP(date1) AS date1_unix_timestamp, 
             datetime1, 
             UNIX_TIMESTAMP(datetime1) AS datetime1_unix_timestamp, 
             timestamp1, 
             UNIX_TIMESTAMP(timestamp1) AS timestamp1_unix_timestamp 
        FROM mf_date_fun_t;

      Hasil berikut dikembalikan.

      +------------+----------------------+---------------------+--------------------------+------------------------------+---------------------------+
      | date1      | date1_unix_timestamp | datetime1           | datetime1_unix_timestamp | timestamp1                   | timestamp1_unix_timestamp |
      +------------+----------------------+---------------------+--------------------------+------------------------------+---------------------------+
      | 2021-11-29 | 1638115200           | 2021-11-29 00:01:00 | 1638115260               | 2021-01-11 00:00:00.123456789 | 1610294400                |
      | 2021-11-28 | 1638028800           | 2021-11-28 00:02:00 | 1638028920               | 2021-02-11 00:00:00.123456789 | 1612972800                |
      | 2021-11-27 | 1637942400           | 2021-11-27 00:03:00 | 1637942580               | 2021-03-11 00:00:00.123456789 | 1615392000                |
      | 2021-11-26 | 1637856000           | 2021-11-26 00:04:00 | 1637856240               | 2021-04-11 00:00:00.123456789 | 1618070400                |
      | 2021-11-25 | 1637769600           | 2021-11-25 00:05:00 | 1637769900               | 2021-05-11 00:00:00.123456789 | 1620662400                |
      | 2021-11-24 | 1637683200           | 2021-11-24 00:06:00 | 1637683560               | 2021-06-11 00:00:00.123456789 | 1623340800                |
      | 2021-11-23 | 1637596800           | 2021-11-23 00:07:00 | 1637597220               | 2021-07-11 00:00:00.123456789 | 1625932800                |
      | 2021-11-22 | 1637510400           | 2021-11-22 00:08:00 | 1637510880               | 2021-08-11 00:00:00.123456789 | 1628611200                |
      | 2021-11-21 | 1637424000           | 2021-11-21 00:09:00 | 1637424540               | 2021-09-11 00:00:00.123456789 | 1631289600                |
      | 2021-11-20 | 1637337600           | 2021-11-20 00:10:00 | 1637338200               | 2021-10-11 00:00:00.123456789 | 1633881600                |
      +------------+----------------------+---------------------+--------------------------+------------------------------+---------------------------+

WEEKDAY

  • Sintaksis

    BIGINT WEEKDAY(DATETIME <date>)
  • Deskripsi

    Mengembalikan angka yang mewakili hari dalam seminggu di mana nilai tanggal berada.

  • Parameter

    tanggal: wajib. Nilai dari tipe DATETIME. Nilai tanggal harus dalam format yyyy-mm-dd hh:mi:ss. Jika nilai input adalah tipe STRING dan edisi tipe data MaxCompute V1.0 digunakan dalam proyek Anda, nilai input secara implisit dikonversi ke tipe DATETIME sebelum perhitungan.

  • Nilai Kembali

    Nilai bertipe BIGINT dikembalikan. Nilai kembali bervariasi berdasarkan aturan berikut:

    • Senin dianggap sebagai hari pertama dalam seminggu dengan nilai kembali 0. Hari-hari dalam seminggu diberi nomor secara berurutan mulai dari 0. Nilai kembali untuk Minggu adalah 6.

    • Jika nilai dari tanggal bukan bertipe DATETIME atau STRING atau formatnya tidak sesuai dengan persyaratan, kesalahan akan dikembalikan.

    • Jika nilai dari tanggal adalah null, maka null akan dikembalikan.

  • Contoh

    • Contoh data statis

      -- Nilai kembali adalah 4. 
      SELECT WEEKDAY(datetime '2009-03-20 11:11:00'); 
      
      -- Nilai kembali adalah 4. 
      SET odps.sql.type.system.odps2=false;
      SELECT WEEKDAY('2009-03-20 11:11:00');
      
      -- Nilai kembali adalah NULL. 
      SELECT WEEKDAY(null);
    • Contoh data tabel

      Hitung hari dalam seminggu di mana setiap nilai tanggal dalam kolom datetime1 berada. Data dalam Data Contoh digunakan dalam contoh ini. Pernyataan contoh:

      SELECT datetime1, WEEKDAY(datetime1) AS datetime1_weekday FROM mf_date_fun_t; 

      Hasil berikut dikembalikan.

      +---------------------+-------------------+
      | datetime1           | datetime1_weekday |
      +---------------------+-------------------+
      | 2021-11-29 00:01:00 | 0                 |
      | 2021-11-28 00:02:00 | 6                 |
      | 2021-11-27 00:03:00 | 5                 |
      | 2021-11-26 00:04:00 | 4                 |
      | 2021-11-25 00:05:00 | 3                 |
      | 2021-11-24 00:06:00 | 2                 |
      | 2021-11-23 00:07:00 | 1                 |
      | 2021-11-22 00:08:00 | 0                 |
      | 2021-11-21 00:09:00 | 6                 |
      | 2021-11-20 00:10:00 | 5                 |
      +---------------------+-------------------+

WEEKOFYEAR

  • Sintaksis

    BIGINT WEEKOFYEAR(DATETIME <date>)
  • Deskripsi

    Mengembalikan angka yang mewakili minggu dalam setahun di mana nilai tanggal jatuh. Senin dianggap sebagai hari pertama dalam seminggu.

    Catatan

    Untuk menentukan apakah suatu minggu termasuk dalam tahun berjalan atau tahun berikutnya, temukan tahun di mana lebih dari empat hari dalam minggu tersebut jatuh. Jika minggu tersebut termasuk dalam tahun berjalan, maka minggu itu dianggap sebagai minggu terakhir tahun tersebut. Jika minggu tersebut termasuk dalam tahun berikutnya, maka minggu itu dianggap sebagai minggu pertama tahun berikutnya.

  • Parameter

    date: wajib. Nilai bertipe DATETIME. Nilai tanggal harus dalam format yyyy-mm-dd hh:mi:ss. Jika nilai masukan bertipe STRING dan edisi tipe data MaxCompute V1.0 digunakan dalam proyek Anda, nilai masukan secara implisit dikonversi ke tipe DATETIME sebelum perhitungan dilakukan.

  • Nilai Pengembalian

    Nilai bertipe BIGINT dikembalikan. Nilai pengembalian bervariasi berdasarkan aturan berikut:

    • Jika nilai dari tanggal bukan bertipe DATETIME atau STRING atau formatnya tidak memenuhi persyaratan, null dikembalikan.

    • Jika nilai dari tanggal adalah null, null dikembalikan.

  • Contoh

    • Contoh data statis

      -- Nilai 1 dikembalikan. 20141229 berada di tahun 2014, tetapi sebagian besar hari dalam minggu tersebut jatuh di tahun 2015. Oleh karena itu, nilai pengembalian 1 menunjukkan minggu pertama tahun 2015.  
      SELECT WEEKOFYEAR(TO_DATE("20141229", "yyyymmdd"));  
      
      -- Nilai pengembalian adalah 1.     
      SELECT WEEKOFYEAR(TO_DATE("20141231", "yyyymmdd")); 
      
      -- Nilai pengembalian adalah 53.  
      SELECT WEEKOFYEAR(TO_DATE("20151229", "yyyymmdd"));
      
      -- Nilai pengembalian adalah 48. 
      SET odps.sql.type.system.odps2=false;
      SELECT WEEKOFYEAR('2021-11-29 00:01:00');
      
      -- Nilai pengembalian adalah NULL. 
      SELECT WEEKOFYEAR('20141231');
      
      -- Nilai pengembalian adalah NULL. 
      SELECT WEEKOFYEAR(null);
    • Contoh data tabel

      Hitung minggu ke-n dalam setahun di mana setiap tanggal dalam kolom datetime1 jatuh. Data dalam Data Contoh digunakan dalam contoh ini. Pernyataan contoh:

      SELECT datetime1, WEEKOFYEAR(datetime1) AS datetime1_weekofyear FROM mf_date_fun_t; 

      Hasil berikut dikembalikan.

      +---------------------+----------------------+
      | datetime1           | datetime1_weekofyear |
      +---------------------+----------------------+
      | 2021-11-29 00:01:00 | 48                   |
      | 2021-11-28 00:02:00 | 47                   |
      | 2021-11-27 00:03:00 | 47                   |
      | 2021-11-26 00:04:00 | 47                   |
      | 2021-11-25 00:05:00 | 47                   |
      | 2021-11-24 00:06:00 | 47                   |
      | 2021-11-23 00:07:00 | 47                   |
      | 2021-11-22 00:08:00 | 47                   |
      | 2021-11-21 00:09:00 | 46                   |
      | 2021-11-20 00:10:00 | 46                   |
      +---------------------+----------------------+

TAHUN

  • Sintaksis

    INT YEAR(DATETIME|TIMESTAMP|DATE|STRING <date>) 
  • Deskripsi

    Mengembalikan tahun di mana nilai tanggal berada. Fungsi ini merupakan bagian dari MaxCompute V2.0.

  • Parameter

    date: wajib. Nilai tanggal dengan tipe DATETIME, TIMESTAMP, DATE, atau STRING. Nilai input berada dalam format yyyy-mm-dd, yyyy-mm-dd hh:mi:ss, atau yyyy-mm-dd hh:mi:ss:ff3. Jika nilainya bertipe STRING, nilai tersebut harus mencakup setidaknya bagian yyyy-mm-dd dan tidak boleh mengandung string tambahan.

  • Nilai Pengembalian

    Nilai dengan tipe INT dikembalikan. Nilai pengembalian bervariasi berdasarkan aturan berikut:

    • Jika nilai date bukan bertipe DATETIME, TIMESTAMP, DATE, atau STRING atau formatnya tidak memenuhi persyaratan, null dikembalikan.

    • Jika nilai date adalah null, null dikembalikan.

  • Contoh

    • Contoh data statis

      -- Nilai pengembalian adalah 1970. 
      SELECT YEAR('1970-01-01 12:30:00');
      
      -- Nilai pengembalian adalah 1970. 
      SELECT YEAR('1970-01-01'); 
      
      -- Nilai pengembalian adalah 70. 
      SELECT YEAR('70-01-01');
      
      -- Nilai pengembalian adalah NULL. 
      SELECT YEAR('1970/03/09'); 
      
      -- Nilai pengembalian adalah NULL. 
      SELECT YEAR(null); 
    • Contoh data tabel

      Mendapatkan tahun di mana setiap nilai tanggal dalam kolom date1, datetime1, timestamp1, dan date3 berada. Data dalam Data Contoh digunakan dalam contoh ini. Pernyataan contoh:

      -- Aktifkan edisi tipe data MaxCompute V2.0. Kirim pernyataan SET berikut bersama dengan pernyataan SQL. 
      SET odps.sql.type.system.odps2=true;
      SELECT date1,  
             YEAR(date1) AS date1_year, 
             datetime1, 
             YEAR(datetime1) AS datetime1_year, 
             timestamp1, 
             YEAR(timestamp1) AS timestamp1_year, 
             date3, 
             YEAR(date3) AS date3_year 
        FROM mf_date_fun_t;

      Hasil berikut dikembalikan.

      +------------+------------+---------------------+----------------+-------------------------------+-----------------+------------+------------+
      | date1      | date1_year | datetime1           | datetime1_year | timestamp1                    | timestamp1_year | date3      | date3_year |
      +------------+------------+---------------------+----------------+-------------------------------+-----------------+------------+------------+
      | 2021-11-29 | 2021       | 2021-11-29 00:01:00 | 2021           | 2021-01-11 00:00:00.123456789 | 2021            | 2021-11-20 | 2021       |
      | 2021-11-28 | 2021       | 2021-11-28 00:02:00 | 2021           | 2021-02-11 00:00:00.123456789 | 2021            | 2021-11-21 | 2021       |
      | 2021-11-27 | 2021       | 2021-11-27 00:03:00 | 2021           | 2021-03-11 00:00:00.123456789 | 2021            | 2021-11-22 | 2021       |
      | 2021-11-26 | 2021       | 2021-11-26 00:04:00 | 2021           | 2021-04-11 00:00:00.123456789 | 2021            | 2021-11-23 | 2021       |
      | 2021-11-25 | 2021       | 2021-11-25 00:05:00 | 2021           | 2021-05-11 00:00:00.123456789 | 2021            | 2021-11-24 | 2021       |
      | 2021-11-24 | 2021       | 2021-11-24 00:06:00 | 2021           | 2021-06-11 00:00:00.123456789 | 2021            | 2021-11-25 | 2021       |
      | 2021-11-23 | 2021       | 2021-11-23 00:07:00 | 2021           | 2021-07-11 00:00:00.123456789 | 2021            | 2021-11-26 | 2021       |
      | 2021-11-22 | 2021       | 2021-11-22 00:08:00 | 2021           | 2021-08-11 00:00:00.123456789 | 2021            | 2021-11-27 | 2021       |
      | 2021-11-21 | 2021       | 2021-11-21 00:09:00 | 2021           | 2021-09-11 00:00:00.123456789 | 2021            | 2021-11-28 | 2021       |
      | 2021-11-20 | 2021       | 2021-11-20 00:10:00 | 2021           | 2021-10-11 00:00:00.123456789 | 2021            | 2021-11-29 | 2021       |
      +------------+------------+---------------------+----------------+-------------------------------+-----------------+------------+------------+

Referensi