All Products
Search
Document Center

MaxCompute:Fungsi tanggal

Last Updated:Sep 17, 2026

Topik ini menjelaskan sintaks dan parameter fungsi tanggal yang didukung oleh MaxCompute serta menyediakan contoh penggunaannya. Anda dapat memilih fungsi tanggal yang sesuai untuk melakukan perhitungan atau konversi tanggal berdasarkan kebutuhan bisnis Anda.

Function

Description

ADD_MONTHS

Mengembalikan nilai tanggal 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 dari nilai tanggal berdasarkan interval yang ditentukan oleh delta. Hanya perubahan berdasarkan hari yang didukung. Fungsi DATE_ADD merupakan 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 dari nilai tanggal berdasarkan interval yang ditentukan oleh delta. Fungsi DATE_SUB merupakan kebalikan dari fungsi DATE_ADD.

DATEDIFF

Menghitung selisih antara dua nilai tanggal berdasarkan unit waktu yang ditentukan oleh datepart.

DATEPART

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

DATETRUNC

Memotong nilai tanggal berdasarkan unit waktu yang ditentukan oleh datepart.

DAY

Mengembalikan hari dari nilai tanggal.

DAYOFMONTH

Mengembalikan komponen hari dari nilai tanggal.

DAYOFWEEK

Mengembalikan hari dalam seminggu dari nilai tanggal.

DAYOFYEAR

Mengembalikan bilangan bulat yang merepresentasikan urutan hari dalam tahun tersebut.

EXTRACT

Mengembalikan komponen tertentu dari timestamp.

FROM_UNIXTIME

Mengonversi Stempel waktu UNIX bertipe BIGINT menjadi nilai tanggal bertipe DATETIME.

FROM_UTC_TIMESTAMP

Mengonversi timestamp UTC menjadi timestamp untuk zona waktu tertentu.

GETDATE

Mengembalikan waktu sistem saat ini sebagai nilai tanggal.

HOUR

Mengembalikan komponen jam dari nilai tanggal.

ISDATE

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

LAST_DAY

Mengembalikan hari terakhir dalam bulan dari nilai tanggal.

LASTDAY

Mengembalikan hari terakhir dalam bulan dari nilai tanggal.

MINUTE

Mengembalikan komponen menit dari nilai tanggal.

MONTH

Mengembalikan bulan dari nilai tanggal.

MONTHS_BETWEEN

Mengembalikan jumlah bulan antara nilai tanggal tertentu.

NEXT_DAY

Mengembalikan tanggal hari kerja pertama yang jatuh setelah tanggal yang ditentukan dan sesuai dengan minggu tersebut.

NOW

Mengembalikan tanggal dan waktu sistem saat ini.

QUARTER

Mengembalikan kuartal dari nilai tanggal.

SECOND

Mengembalikan komponen detik dari nilai tanggal.

TO_CHAR

Mengonversi nilai tanggal menjadi string dalam format tertentu.

TO_DATE

Mengonversi string menjadi nilai tanggal dalam format tertentu.

TO_MILLIS

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

TRUNC_TIME

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

UNIX_TIMESTAMP

Mengonversi nilai tanggal menjadi Stempel waktu UNIX berupa bilangan bulat.

WEEKDAY

Mengembalikan angka yang merepresentasikan hari dalam seminggu dari nilai tanggal.

WEEKOFYEAR

Mengembalikan angka yang merepresentasikan minggu dalam tahun dari nilai tanggal.

YEAR

Mengembalikan tahun dari nilai tanggal.

Catatan penggunaan

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

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

  • Tingkat proyek: Pemilik proyek dapat mengaktifkan edisi tipe data MaxCompute V2.0 untuk seluruh proyek sesuai kebutuhan. Konfigurasi akan berlaku dalam 10 hingga 15 menit. Untuk mengaktifkannya di tingkat proyek, jalankan perintah berikut:

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

    Untuk informasi lebih lanjut tentang setproject, lihat Operasi proyek. Untuk informasi lebih lanjut tentang hal-hal yang perlu diperhatikan saat mengaktifkan edisi tipe data MaxCompute V2.0 di tingkat proyek, lihat Panduan versi tipe data.

Data sampel

Bagian ini menyediakan data sumber sampel agar Anda memahami cara menggunakan fungsi tanggal. Dalam topik ini, tabel bernama mf_date_fun_t dibuat dan data dimasukkan ke dalamnya. Contoh pernyataan:

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

Kueri data dari tabel mf_date_fun_t. Contoh pernyataan:

SELECT * FROM mf_date_fun_t;

Hasil berikut dikembalikan.

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

ADD_MONTHS

  • Sintaks

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

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

  • Parameter

    Parameter

    Required

    Description

    startdate

    Yes

    Nilai bertipe DATE, DATETIME, TIMESTAMP, atau STRING. Nilainya dalam format yyyy-mm-dd, yyyy-mm-dd hh:mi:ss, 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

    Yes

    Nilai bertipe INT.

  • Nilai kembali

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

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

    • Jika nilai startdate adalah null, error dikembalikan.

    • Jika nilai num_months adalah null, null dikembalikan.

  • Contoh

    • Contoh data statis

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

      Tambahkan jumlah bulan tertentu ke tanggal dalam kolom date1, datetime1, timestamp1, dan date3. Data dalam Data sampel digunakan dalam contoh ini. Contoh pernyataan:

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

      Hasil berikut dikembalikan.

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

CURRENT_TIMESTAMP

  • Sintaks

    TIMESTAMP CURRENT_TIMESTAMP()
  • Deskripsi

    Mengembalikan timestamp saat ini. Nilai kembali tidak tetap. Fungsi ini merupakan fungsi tambahan MaxCompute V2.0.

  • Nilai kembali

    Nilai bertipe TIMESTAMP dikembalikan.

  • Contoh

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

CURRENT_TIMEZONE

  • Sintaks

    STRING CURRENT_TIMEZONE()
  • Deskripsi

    Mengembalikan zona waktu sistem saat ini.

  • Nilai kembali

    Nilai bertipe STRING dikembalikan.

  • Contoh

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

DATE_ADD

  • Sintaks

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

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

    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 presisi pada tingkat jam, menit, atau detik, rujuk fungsi DATEADD. Fungsi ini hanya mendukung penambahan atau pengurangan satu unit saja di antara tahun, bulan, hari, jam, menit, atau detik. Jika Anda perlu menyesuaikan beberapa granularitas secara bersamaan, disarankan menggunakan user-defined function.

    • Logika fungsi ini berlawanan dengan fungsi DATE_SUB.

  • Parameter

    Parameter

    Required

    Description

    startdate

    Yes

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

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

    delta

    Yes

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

  • Nilai kembali

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

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

    • Jika nilai startdate adalah null, error dikembalikan.

    • Jika nilai delta adalah null, null dikembalikan.

  • Contoh

    • Contoh data statis

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

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

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

      Hasil berikut dikembalikan.

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

DATEADD

  • Sintaks

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

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

  • Parameter

    Parameter

    Required

    Description

    date

    Yes

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

    delta

    Yes

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

    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 bilangan basis-10, basis-12, basis-24, dan basis-60, masing-masing.

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

    datepart

    Yes

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

    Nilai parameter ini ditentukan sesuai dengan aturan konversi antara tipe STRING dan DATETIME. Nilai 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 data. Format Tanggal/Waktu Diperluas (EDTF) juga didukung, seperti -year, -month, -mon, -day, atau -hour.

  • Nilai kembali

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

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

    • Jika nilai date adalah null, error dikembalikan.

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

  • Contoh

    • Contoh data statis

      • Contoh 1: penggunaan umum

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

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

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

        Untuk menyatakan konstanta bertipe DATETIME, gunakan ekspresi valid dalam pernyataan berikut:

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

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

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

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

      Hasil berikut dikembalikan.

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

DATE_FORMAT

  • Sintaks

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

    Mengonversi nilai date menjadi string dalam format tertentu.

  • Parameter

    Parameter

    Required

    Description

    date

    Yes

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

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

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

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

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

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

    format

    Yes

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

    • YYYY atau yyyy: tahun. yyyy merepresentasikan tahun kalender dan YYYY merepresentasikan tahun dalam minggu.

      Catatan

      Tahun dalam minggu mungkin tidak konsisten dengan tahun aktual. Berhati-hatilah saat menggunakan format tahun dalam minggu.

    • MM: bulan.

    • mm: menit.

    • dd: hari.

    • HH: jam yang dinyatakan dalam format 24 jam.

    • hh: jam yang dinyatakan dalam format 12 jam.

    • mi: menit.

    • ss: detik.

    • SSS: milidetik.

    Penting
    • Jika edisi tipe data Hive-compatible dinonaktifkan, baik HH maupun hh menunjukkan bahwa format 24 jam digunakan. Dalam kasus 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 Hive-compatible diaktifkan, HH menunjukkan bahwa format 24 jam digunakan, dan hh menunjukkan bahwa format 12 jam digunakan. Dalam kasus ini, format tanggal harus yyyy-MM-dd hh:mm:ss. Jika yyyy-MM-dd hh:mi:ss digunakan, null dikembalikan.

  • Nilai kembali

    Nilai bertipe STRING dikembalikan. Nilai kembali mengikuti aturan berikut:

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

    • Jika nilai date adalah null, error dikembalikan.

    • Jika nilai format adalah null, null dikembalikan.

  • Contoh

    • Contoh data statis

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

      Konversi nilai tanggal dalam kolom datetime1 dan timestamp1 menjadi string dalam format tertentu. Data dalam Data sampel digunakan dalam contoh ini. Contoh pernyataan:

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

      Hasil berikut dikembalikan.

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

DATE_SUB

  • Sintaks

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

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

    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 presisi pada tingkat jam, menit, atau detik, rujuk fungsi DATEADD. Fungsi ini hanya mendukung penambahan atau pengurangan satu unit saja di antara tahun, bulan, hari, jam, menit, atau detik. Jika Anda perlu menyesuaikan beberapa granularitas secara bersamaan, disarankan menggunakan user-defined function.

    • Logika fungsi ini berlawanan dengan fungsi DATE_ADD.

  • Parameter

    Parameter

    Required

    Description

    startdate

    Yes

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

    delta

    Yes

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

  • Nilai kembali

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

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

    • Jika nilai startdate adalah null, error dikembalikan.

    • Jika nilai delta adalah null, null dikembalikan.

  • Contoh

    • Contoh data statis

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

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

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

      Hasil berikut dikembalikan.

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

DATEDIFF

  • Sintaks

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

    Menghitung selisih antara date1 dan date2 dalam unit waktu yang ditentukan oleh datepart.

  • Parameter

    Parameter

    Required

    Description

    date1 dan date2

    Yes

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

    Catatan

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

    datepart

    No

    Unit waktu, yaitu konstanta bertipe STRING.

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

    Catatan

    Fungsi ini mengabaikan unit yang lebih rendah berdasarkan unit waktu yang ditentukan oleh datepart lalu menghitung hasilnya.

  • Nilai kembali

    Nilai bertipe BIGINT dikembalikan. Nilai kembali mengikuti aturan berikut:

    • Jika nilai date1 atau date2 bukan bertipe DATE, DATETIME, atau TIMESTAMP, error dikembalikan.

    • Jika date1 lebih kecil dari date2, nilai kembali negatif.

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

    • Jika nilai datepart adalah null, null dikembalikan.

  • Contoh

    • Contoh data statis

      • Contoh 1

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

        Hasil berikut dikembalikan.

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

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

        Hasil berikut dikembalikan.

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

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

        Hasil berikut dikembalikan.

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

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

        Hasil berikut dikembalikan.

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

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

        Hasil berikut dikembalikan.

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

      • Contoh 6

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

        Hasil berikut dikembalikan.

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

      Hitung selisih antara nilai dalam kolom date1 dan date2, antara nilai dalam kolom datetime1 dan datetime2, serta antara nilai dalam kolom timestamp1 dan timestamp2 dalam unit waktu tertentu. Data dalam Data sampel digunakan dalam contoh ini. Contoh pernyataan:

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

      Hasil berikut dikembalikan.

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

DATEPART

  • Sintaks

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

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

  • Parameter

    Parameter

    Required

    Description

    date

    Yes

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

    datepart

    Yes

    Konstanta bertipe STRING. Parameter ini mendukung EDTF.

    Nilai parameter ini ditentukan sesuai dengan aturan konversi antara tipe STRING dan DATETIME. Nilai 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 data. EDTF juga didukung, seperti -year, -month, -mon, -day, atau -hour.

  • Nilai kembali

    Nilai bertipe BIGINT dikembalikan. Nilai kembali mengikuti aturan berikut:

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

    • Jika nilai date adalah null, error dikembalikan.

    • Jika nilai datepart adalah null, null dikembalikan.

  • Contoh

    • Contoh data statis

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

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

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

      Hasil berikut dikembalikan.

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

DATETRUNC

  • Sintaks

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

    Memotong nilai date berdasarkan unit waktu yang ditentukan oleh datepart.

  • Parameter

    Parameter

    Required

    Description

    date

    Yes

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

    datepart

    Yes

    Konstanta bertipe STRING. Parameter ini mendukung EDTF.

    Nilai parameter ini ditentukan sesuai dengan aturan konversi antara tipe STRING dan DATETIME. Nilai 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 data. EDTF juga didukung, seperti -year, -month, -mon, -day, atau -hour.

  • Nilai kembali

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

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

    • Jika nilai date adalah null, error dikembalikan.

    • Jika nilai datepart adalah null, null dikembalikan.

  • Contoh

    • Contoh data statis

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

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

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

      Hasil berikut dikembalikan.

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

DAY

  • Sintaks

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

    Mengembalikan hari dari nilai tanggal. Fungsi ini merupakan fungsi tambahan MaxCompute V2.0.

  • Parameter

    date: wajib. Nilai tanggal bertipe DATETIME, TIMESTAMP, DATE, atau STRING dalam format yyyy-mm-dd, yyyy-mm-dd hh:mi:ss, 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 mengikuti aturan berikut:

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

    • Jika nilai date adalah null, null dikembalikan.

  • Contoh

    • Contoh data statis

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

      Ambil hari dari setiap nilai tanggal dalam kolom date1, datetime1, timestamp1, dan date3. Data dalam Data sampel digunakan dalam contoh ini. Contoh pernyataan:

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

      Hasil berikut dikembalikan.

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

DAYOFMONTH

  • Sintaks

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

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

  • Parameter

    date: wajib. Nilai tanggal bertipe DATETIME, TIMESTAMP, DATE, atau STRING dalam format yyyy-mm-dd, yyyy-mm-dd hh:mi:ss, 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 mengikuti aturan berikut:

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

    • Jika nilai date adalah null, null dikembalikan.

  • Contoh

    • Contoh data statis

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

      Ambil komponen hari dari nilai tanggal dalam kolom date1, datetime1, timestamp1, dan date3. Data dalam Data sampel digunakan dalam contoh ini. Contoh pernyataan:

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

      Hasil berikut dikembalikan.

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

DAYOFWEEK

  • Sintaks

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

    Mengembalikan hari dalam seminggu dari nilai tanggal. Fungsi ini merupakan fungsi tambahan MaxCompute V2.0.

  • Parameter

    date: wajib. Nilai tanggal bertipe DATETIME, TIMESTAMP, DATE, atau STRING dalam format yyyy-mm-dd, yyyy-mm-dd hh:mi:ss, 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 mengikuti aturan berikut:

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

    • Jika nilai date adalah null, null dikembalikan.

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

  • Contoh

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

DAYOFYEAR

  • Sintaks

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

    Mengembalikan bilangan bulat yang merepresentasikan urutan hari dalam tahun tersebut. Fungsi ini merupakan fungsi tambahan MaxCompute V2.0.

  • Parameter

    date: wajib. Nilai tanggal bertipe DATETIME, TIMESTAMP, DATE, atau STRING dalam format yyyy-mm-dd, yyyy-mm-dd hh:mi:ss, 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 mengikuti aturan berikut:

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

    • Jika nilai date adalah null, null dikembalikan.

  • Contoh

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

EXTRACT

  • Sintaks

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

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

  • Parameter

    Parameter

    Required

    Description

    datepart

    Yes

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

    date

    Yes

    Nilai tanggal bertipe DATE, DATETIME, TIMESTAMP, atau STRING. Nilai input dalam format yyyy-mm-dd, yyyy-mm-dd hh:mi:ss, 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 mengikuti aturan berikut:

    • Jika nilai datepart bukan YEAR, MONTH, DAY, HOUR, MINUTE, atau SECOND, error dikembalikan.

    • Jika nilai datepart adalah null, error dikembalikan.

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

  • Contoh

    • Contoh data statis

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

      Ekstrak komponen tanggal tertentu dari nilai tanggal dalam kolom timestamp1. Data dalam Data sampel digunakan dalam contoh ini. Contoh pernyataan:

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

      Hasil berikut dikembalikan.

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

FROM_UNIXTIME

  • Sintaks

    DATETIME FROM_UNIXTIME(BIGINT <unixtime>)
  • Deskripsi

    Mengonversi unixtime bertipe BIGINT menjadi nilai tanggal bertipe DATETIME.

  • Parameter

    unixtime: wajib. Nilai tanggal bertipe BIGINT dalam format UNIX, akurat hingga detik. Rentang nilai valid: [-62167305600, 253402387200].

    Catatan

    Jika nilai input bertipe STRING, DOUBLE, atau DECIMAL dan edisi tipe data MaxCompute V1.0 digunakan dalam proyek Anda, nilai input akan dikonversi secara implisit menjadi tipe BIGINT sebelum perhitungan.

  • Nilai kembali

    Nilai bertipe DATETIME dikembalikan dalam format yyyy-mm-dd hh:mi:ss. Jika nilai unixtime adalah null, null dikembalikan.

    Catatan

    Anda dapat menjalankan perintah set odps.sql.hive.compatible=true; untuk mengaktifkan edisi tipe data Hive-compatible. Dalam edisi tersebut, berlaku aturan berikut:

    • Jika nilai input bertipe STRING, nilai tanggal bertipe STRING dikembalikan.

    • Anda dapat menentukan parameter input kedua untuk menentukan format nilai kembali. Misalnya, Anda dapat menentukan format tanggal dan waktu seperti yyyy-MM-dd atau YYYY-MM-dd. yyyy merepresentasikan tahun kalender, sedangkan YYYY merepresentasikan tahun dalam minggu. Tahun dalam minggu mungkin tidak konsisten dengan tahun aktual, sehingga berhati-hatilah saat menggunakannya.

  • Contoh

    • Contoh data statis

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

      Konversi nilai dalam kolom date4 menjadi nilai tanggal. Data dalam Data sampel digunakan dalam contoh ini. Contoh pernyataan:

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

      Hasil berikut dikembalikan.

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

FROM_UTC_TIMESTAMP

  • Sintaks

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

    Mengembalikan timestamp yang dikonversi dari Coordinated Universal Time (UTC) menjadi zona waktu tertentu. Fungsi ini merupakan fungsi tambahan MaxCompute V2.0.

    Penting

    Nilai kembali fungsi FROM_UTC_TIMESTAMP juga dipengaruhi oleh nilai odps.sql.timezone yang dikonfigurasikan untuk proyek Anda. Jika Anda mengonfigurasi odps.sql.timezone=Asia/Shanghai, zona waktu UTC+8 digunakan, yaitu 8 jam lebih awal dari UTC. Dalam kasus ini, 8 jam ditambahkan ke hasil perhitungan fungsi FROM_UTC_TIMESTAMP. Misalnya, fungsi FROM_UTC_TIMESTAMP(0, 'Asia/Shanghai') mengonversi timestamp UTC+0 menjadi waktu Beijing (UTC+08:00), sehingga hasil perhitungannya adalah 0 + 8 x 3600 = 28800. Namun, karena konfigurasi odps.sql.timezone=Asia/Shanghai menambahkan offset 8 jam lagi, nilai kembali akhirnya menjadi 1970-01-01 16:00:00.

  • Parameter

    Parameter

    Required

    Description

    {any primitive type}*

    Yes

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

    timezone

    Yes

    Zona waktu baru.

    Catatan

    Anda dapat mencari daftar zona waktu menggunakan mesin pencari.

  • Nilai kembali

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

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

    • Jika nilai {any primitive type}* adalah null, error dikembalikan.

    • Jika nilai timezone adalah null, null dikembalikan.

  • Contoh

    • Contoh data statis

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

      Konversi nilai tanggal dalam kolom datetime1 dan timestamp1 menjadi timestamp dalam zona waktu tertentu. Data dalam Data sampel digunakan dalam contoh ini. Contoh pernyataan:

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

      Hasil berikut dikembalikan.

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

GETDATE

  • Sintaks

    DATETIME GETDATE()
  • Deskripsi

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

  • Nilai kembali

    Tanggal dan waktu saat ini dikembalikan, bertipe DATETIME.

    Catatan

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

HOUR

  • Sintaks

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

    Mengembalikan komponen jam dari nilai tanggal.

  • Parameter

    date: wajib. Nilai tanggal bertipe DATETIME, TIMESTAMP, atau STRING dalam format yyyy-mm-dd hh:mi: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 MaxCompute V2.0.

  • Nilai kembali

    Nilai bertipe INT dikembalikan. Nilai kembali mengikuti aturan berikut:

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

    • Jika nilai date adalah null, null dikembalikan.

  • Contoh

    • Contoh data statis

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

      Ambil komponen jam dari nilai tanggal dalam kolom datetime1 dan timestamp1. Data dalam Data sampel digunakan dalam contoh ini. Contoh pernyataan:

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

      Hasil berikut dikembalikan.

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

ISDATE

  • Sintaks

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

    Menentukan apakah string tanggal dapat dikonversi menjadi nilai tanggal dalam format tertentu. Jika dapat dikonversi, true dikembalikan; jika tidak, false dikembalikan.

  • Parameter

    Parameter

    Required

    Description

    date

    Yes

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

    format

    Yes

    Konstanta bertipe STRING. Parameter ini tidak mendukung EDTF. Jika ada string format berlebihan dalam format, fungsi ini mengonversi string tanggal yang sesuai dengan string format pertama menjadi nilai tanggal. String sisanya dianggap sebagai pembatas. Misalnya, isdate("1234-yyyy", "yyyy-yyyy") mengembalikan true.

  • Nilai kembali

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

  • Contoh

    • Contoh data statis

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

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

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

      Hasil berikut dikembalikan.

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

LAST_DAY

  • Sintaks

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

    Mengembalikan hari terakhir dalam bulan dari nilai tanggal. Fungsi ini merupakan fungsi tambahan MaxCompute V2.0.

  • Parameter

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

  • Nilai kembali

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

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

    • Jika nilai date adalah null, error dikembalikan.

  • Contoh

    • Contoh data statis

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

      Ambil hari terakhir dalam bulan dari setiap nilai tanggal dalam kolom date1, datetime1, timestamp1, dan date3. Data dalam Data sampel digunakan dalam contoh ini. Contoh pernyataan:

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

      Hasil berikut dikembalikan.

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

LASTDAY

  • Sintaks

    DATETIME LASTDAY(DATETIME <date>)
  • Deskripsi

    Mengembalikan hari terakhir dalam bulan dari nilai date. Hanya komponen hari yang dipertahankan; komponen jam, menit, dan detik diatur menjadi 00:00:00.

  • Parameter

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

  • Nilai kembali

    Nilai bertipe DATETIME dikembalikan dalam format yyyy-mm-dd hh:mi:ss. Nilai kembali mengikuti aturan berikut:

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

    • Jika nilai date adalah null, null dikembalikan.

  • Contoh

    • Contoh data statis

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

      Ambil hari terakhir dalam bulan dari setiap nilai tanggal dalam kolom datetime1. Data dalam Data sampel digunakan dalam contoh ini. Contoh pernyataan:

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

      Hasil berikut dikembalikan.

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

MINUTE

  • Sintaks

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

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

  • Parameter

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

  • Nilai kembali

    Nilai bertipe INT dikembalikan. Nilai kembali mengikuti aturan berikut:

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

    • Jika nilai date adalah null, null dikembalikan.

  • Contoh

    • Contoh data statis

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

      Ambil komponen menit dari nilai tanggal dalam kolom datetime1 dan timestamp1. Data dalam Data sampel digunakan dalam contoh ini. Contoh pernyataan:

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

      Hasil berikut dikembalikan.

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

MONTH

  • Sintaks

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

    Mengembalikan bulan dari nilai tanggal. Fungsi ini merupakan fungsi tambahan MaxCompute V2.0.

  • Parameter

    date: wajib. Nilai tanggal bertipe DATETIME, TIMESTAMP, DATE, atau STRING dalam format yyyy-mm-dd, yyyy-mm-dd hh:mi:ss, 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 mengikuti aturan berikut:

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

    • Jika nilai date adalah null, null dikembalikan.

  • Contoh

    • Contoh data statis

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

      Ambil komponen bulan dari setiap nilai tanggal dalam kolom date1, datetime1, timestamp1, dan date3. Data dalam Data sampel digunakan dalam contoh ini. Contoh pernyataan:

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

      Hasil berikut dikembalikan.

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

MONTHS_BETWEEN

  • Sintaks

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

    Mengembalikan jumlah bulan antara date1 dan date2. Fungsi ini merupakan fungsi tambahan MaxCompute V2.0.

  • Parameter

    date1 dan date2: wajib. Nilai bertipe DATETIME, TIMESTAMP, DATE, atau STRING dalam format yyyy-mm-dd, yyyy-mm-dd hh:mi:ss, 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 DOUBLE dikembalikan. Nilai kembali mengikuti aturan berikut:

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

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

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

  • Contoh

    • Contoh data statis

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

      Hitung jumlah bulan antara nilai tanggal dalam kolom timestamp1 dan timestamp2. Data dalam Data sampel digunakan dalam contoh ini. Contoh pernyataan:

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

      Hasil berikut dikembalikan.

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

NEXT_DAY

  • Sintaks

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

    Mengembalikan tanggal hari pertama yang lebih akhir dari startdate dan sesuai dengan nilai week, yaitu tanggal hari tertentu pada minggu berikutnya. Fungsi ini merupakan fungsi tambahan MaxCompute V2.0.

  • Parameter

    Parameter

    Required

    Description

    startdate

    Yes

    Nilai tanggal bertipe DATE, DATETIME, TIMESTAMP, atau STRING. Nilai input dalam format yyyy-mm-dd, yyyy-mm-dd hh:mi:ss, 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

    Yes

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

  • Nilai kembali

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

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

    • Jika nilai date adalah null, error dikembalikan.

    • Jika nilai week adalah null, null dikembalikan.

  • Contoh

    • Contoh data statis

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

      Ambil tanggal hari pada minggu berikutnya yang sesuai dengan setiap nilai tanggal dalam kolom date1, datetime1, timestamp1, dan date3. Data dalam Data sampel digunakan dalam contoh ini. Contoh pernyataan:

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

      Hasil berikut dikembalikan.

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

NOW

  • Sintaks

    DATETIME NOW()
  • Deskripsi

    Mengembalikan tanggal dan waktu sistem saat ini.

  • Nilai kembali

    Nilai bertipe DATETIME dikembalikan dalam format yyyy-mm-dd hh:mi:ss.SSS.

  • Contoh

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

      SELECT NOW(); 

      Hasil berikut dikembalikan.

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

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

      Hasil berikut dikembalikan.

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

QUARTER

  • Sintaks

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

    Mengembalikan kuartal dari nilai tanggal. Nilai valid: 1 hingga 4. Fungsi ini merupakan fungsi tambahan MaxCompute V2.0.

  • Parameter

    date: wajib. Nilai tanggal bertipe DATETIME, TIMESTAMP, DATE, atau STRING dalam format yyyy-mm-dd, yyyy-mm-dd hh:mi:ss, 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 mengikuti aturan berikut:

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

    • Jika nilai date adalah null, null dikembalikan.

  • Contoh

    • Contoh data statis

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

      Ambil kuartal dari setiap nilai tanggal dalam kolom date1, datetime1, timestamp1, dan date3. Data dalam Data sampel digunakan dalam contoh ini. Contoh pernyataan:

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

      Hasil berikut dikembalikan.

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

SECOND

  • Sintaks

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

    Mengembalikan komponen detik dari nilai tanggal. Fungsi ini merupakan fungsi tambahan dalam MaxCompute 2.0.

  • Parameter

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

  • Nilai kembali

    Nilai bertipe INT dikembalikan. Nilai kembali mengikuti aturan berikut:

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

    • Jika nilai date adalah null, null dikembalikan.

  • Contoh

    • Contoh data statis

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

      Ambil komponen detik dari nilai tanggal dalam kolom datetime1 dan timestamp1. Data dalam Data sampel digunakan dalam contoh ini. Contoh pernyataan:

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

      Hasil berikut dikembalikan.

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

TO_CHAR

  • Sintaks

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

    Mengonversi nilai date bertipe DATETIME menjadi string dalam format tertentu.

  • Parameter

    Parameter

    Required

    Description

    date

    Yes

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

    format

    Yes

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

  • Nilai kembali

    Nilai bertipe STRING dikembalikan. Nilai kembali mengikuti aturan berikut:

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

    • Jika nilai date adalah null, error dikembalikan.

    • Jika nilai format adalah null, null dikembalikan.

  • Contoh

    • Contoh data statis

      • Contoh 1

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

        Hasil berikut dikembalikan.

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

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

        Hasil berikut dikembalikan.

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

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

        Hasil berikut dikembalikan.

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

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

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

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

        Hasil berikut dikembalikan.

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

      Konversi nilai tanggal dalam kolom datetime1 menjadi string dalam format tertentu. Data dalam Data sampel digunakan dalam contoh ini. Contoh pernyataan:

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

      Hasil berikut dikembalikan.

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

TO_DATE

  • Sintaks

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

    Mengonversi string menjadi nilai date dalam format tertentu.

  • Parameter

    Parameter

    Required

    Description

    date

    Yes

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

    format

    No

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

    • Nilai harus mengandung yyyy. Jika tidak, NULL dikembalikan. Jika ada string format berlebihan dalam format, fungsi ini mengonversi string tanggal yang sesuai dengan string format pertama menjadi nilai tanggal. String sisanya dianggap sebagai pembatas. Misalnya, TO_DATE("1234-2234", "yyyy-yyyy") 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 format 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 disertakan dan string yang perlu dikonversi berada dalam format yyyy-mm-dd atau yyyy-mm-dd hh:mi:ss, nilai bertipe DATE dalam format yyyy-mm-dd dikembalikan. Jika parameter format tidak disertakan dan string tidak dalam format tersebut, null dikembalikan.

    • Jika parameter format disertakan, nilai bertipe DATETIME dalam format yyyy-mm-dd hh:mi:ss dikembalikan. Jika nilai date atau format adalah null, null dikembalikan.

  • Contoh

    • Contoh data statis

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

      Konversi nilai tanggal pada kolom date3 ke format tanggal tertentu. Contoh ini menggunakan data dari Data sampel. Berikut adalah pernyataan contohnya:

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

      Hasil yang dikembalikan adalah sebagai berikut.

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

TO_MILLIS

  • Sintaks

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

    Mengonversi nilai date menjadi Stempel waktu UNIX yang akurat hingga milidetik. Fungsi ini merupakan fungsi tambahan MaxCompute V2.0.

  • Parameter

    date: wajib. Nilai tanggal bertipe DATETIME atau TIMESTAMP dalam format yyyy-mm-dd hh:mi:ss atau yyyy-mm-dd hh:mi:ss.ff3.

  • Nilai kembali

    Nilai bertipe BIGINT dikembalikan. Nilai kembali mengikuti aturan berikut:

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

    • Jika nilai date adalah null, error dikembalikan.

  • Contoh

    • Contoh data statis

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

      Konversi nilai tanggal dalam kolom datetime1 dan timestamp1 menjadi Stempel waktu UNIX yang akurat hingga milidetik. Data dalam Data sampel digunakan dalam contoh ini. Contoh pernyataan:

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

      Hasil berikut dikembalikan.

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

TRUNC_TIME

  • Format perintah

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

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

  • Parameter

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

    • datepart: Wajib. Konstanta bertipe STRING, tidak peka huruf besar/kecil, mendukung year, month, day, 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, error dikembalikan. Tipe STRING untuk date hanya didukung ketika versi tipe data proyek MaxCompute adalah 1.0.

    • Ketika datepart adalah NULL, error dikembalikan.

  • Contoh

    • Waktu sebagai tipe DATETIME

      Misalnya, ketika zona waktu Session atau Proyek saat ini adalah UTC+8, waktu lokal adalah datetime '2025-06-03 07:15:08', fungsi TRUNC_TIME pertama-tama mengonversi waktu lokal ke waktu UTC '2025-06-02 23:15:08', lalu memotong sesuai datepart, dan mengembalikan hasil sebagai tipe STRING.

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

      Hasil berikut dikembalikan.

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

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

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

      Hasil berikut dikembalikan.

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

      Misalnya, waktu input adalah tipe STRING '2025-06-03 15:30:30'. Anda harus mengatur versi tipe data proyek MaxCompute ke 1.0 agar dikonversi secara implisit ke tipe DATETIME sebelum perhitungan. Jika tidak, error akan dikembalikan.

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

      Hasil berikut dikembalikan.

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

UNIX_TIMESTAMP

  • Sintaks

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

    Mengonversi nilai date menjadi Stempel waktu UNIX berupa bilangan bulat.

  • Parameter

    date: wajib. Nilai tanggal bertipe DATETIME, DATE, TIMESTAMP, atau STRING dalam format yyyy-mm-dd hh:mi:ss, yyyy-mm-dd, atau yyyy-mm-dd hh:mi:ss.ff3. Jika nilai input bertipe STRING dan edisi tipe data MaxCompute V1.0 digunakan dalam proyek Anda, nilai input akan dikonversi secara implisit menjadi nilai bertipe DATETIME sebelum perhitungan. Untuk informasi lebih lanjut tentang edisi tipe data MaxCompute V1.0, lihat Versi tipe data 1.0. Jika Anda mengaktifkan edisi tipe data MaxCompute V2.0, konversi implisit gagal. Dalam kasus ini, Anda harus menggunakan 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 Versi tipe data 2.0.

    Catatan

    Jika nilai input adalah konstanta dan bukan nilai dalam tabel, nilai input 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 tipe data dan dalam format 'yyyy-mm-dd hh:mi:ss', nilai input dikenali sebagai nilai bertipe STRING.

  • Nilai kembali

    Stempel waktu UNIX bertipe BIGINT dikembalikan. Nilai kembali mengikuti aturan berikut:

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

    • Jika nilai date adalah null, null dikembalikan.

  • Contoh

    • Contoh data statis

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

      Konversi nilai tanggal dalam kolom date1, datetime1, dan timestamp1 menjadi Stempel waktu UNIX berupa bilangan bulat. Data dalam Data sampel digunakan dalam contoh ini. Contoh pernyataan:

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

      Hasil berikut dikembalikan.

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

WEEKDAY

  • Sintaks

    BIGINT WEEKDAY(DATETIME <date>)
  • Deskripsi

    Mengembalikan angka yang merepresentasikan hari dalam seminggu dari nilai date.

  • Parameter

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

  • Nilai kembali

    Nilai bertipe BIGINT dikembalikan. Nilai kembali mengikuti aturan berikut:

    • Senin dianggap sebagai hari pertama dalam seminggu dan nilai kembalinya adalah 0. Hari dalam seminggu dinomori secara berurutan mulai dari 0. Nilai kembali Minggu adalah 6.

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

    • Jika nilai date adalah null, null dikembalikan.

  • Contoh

    • Contoh data statis

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

      Hitung hari dalam seminggu dari setiap nilai tanggal dalam kolom datetime1. Data dalam Data sampel digunakan dalam contoh ini. Contoh pernyataan:

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

      Hasil berikut dikembalikan.

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

WEEKOFYEAR

  • Sintaks

    BIGINT WEEKOFYEAR(DATETIME <date>)
  • Deskripsi

    Mengembalikan angka yang merepresentasikan minggu dalam tahun dari nilai tanggal. Senin dianggap sebagai hari pertama dalam minggu.

    Catatan

    Untuk menentukan apakah suatu minggu termasuk dalam tahun ini atau tahun depan, cari tahun tempat lebih dari empat hari dalam minggu tersebut jatuh. Jika minggu tersebut termasuk dalam tahun ini, minggu tersebut dianggap sebagai minggu terakhir tahun ini. Jika minggu tersebut termasuk dalam tahun depan, minggu tersebut dianggap sebagai minggu pertama tahun depan.

  • Parameter

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

  • Nilai kembali

    Nilai bertipe BIGINT dikembalikan. Nilai kembali mengikuti aturan berikut:

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

    • Jika nilai date adalah null, null dikembalikan.

  • Contoh

    • Contoh data statis

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

      Hitung minggu ke-n dalam tahun dari setiap tanggal dalam kolom datetime1. Data dalam Data sampel digunakan dalam contoh ini. Contoh pernyataan:

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

      Hasil berikut dikembalikan.

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

YEAR

  • Sintaks

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

    Mengembalikan tahun dari nilai date. Fungsi ini merupakan fungsi tambahan MaxCompute V2.0.

  • Parameter

    date: wajib. Nilai tanggal bertipe DATETIME, TIMESTAMP, DATE, atau STRING dalam format yyyy-mm-dd, yyyy-mm-dd hh:mi:ss, 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 mengikuti aturan berikut:

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

    • Jika nilai date adalah null, null dikembalikan.

  • Contoh

    • Contoh data statis

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

      Ambil tahun dari setiap nilai tanggal dalam kolom date1, datetime1, timestamp1, dan date3. Data dalam Data sampel digunakan dalam contoh ini. Contoh pernyataan:

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

      Hasil berikut dikembalikan.

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

Referensi