全部产品
Search
文档中心

MaxCompute:TO_DATE

更新时间:Jul 02, 2025

Mengonversi string yang sesuai dengan format tertentu menjadi nilai tanggal standar.

Sintaksis perintah

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

Deskripsi parameter

Parameter

Diperlukan

Deskripsi

date

Ya

Tipe STRING, nilai tanggal yang memenuhi format. Jika nilai masukan adalah tipe BIGINT, DOUBLE, DECIMAL, atau DATETIME, nilai tersebut secara implisit dikonversi menjadi STRING sebelum perhitungan. Fungsi ini juga mendukung string tanggal dalam format ISO 8601.

format

Tidak

Konstanta tipe STRING. Parameter ini menentukan format tanggal. format tidak mendukung format ekstensi tanggal. Karakter lain diabaikan sebagai karakter yang tidak berguna selama penguraian.

Catatan
  • Harus berisi setidaknya yyyy dan hanya boleh muncul sekali. Jika tidak, NULL akan dikembalikan.

  • yyyy: tahun empat digit, mm: bulan dua digit, dd: hari dua digit, hh: jam format 24-jam, mi: menit dua digit, ss: detik dua digit, ff3: milidetik tiga digit.

Deskripsi nilai kembali

Fungsi ini mengembalikan nilai bertipe DATE atau DATETIME:

  • Jika fungsi dipanggil tanpa parameter format, hasilnya adalah nilai bertipe DATE dalam format yyyy-mm-dd.

  • Jika fungsi dipanggil dengan parameter format, hasilnya adalah nilai bertipe DATETIME dalam format yyyy-mm-dd hh:mi:ss.

  • Jika nilai date atau format adalah NULL, fungsi akan mengembalikan NULL.

Contoh penggunaan

Contoh data statis

-- Mengembalikan 2025-01-29
SELECT TO_DATE('2025-01-29');

-- Mengembalikan 2025-01-27 00:00:00
SELECT TO_DATE('Alibaba2025-01*27', 'Alibabayyyy-mm*dd');

-- Mengembalikan 2025-01-12 00:00:00
SELECT TO_DATE('20250112', 'yyyymmdd');

-- Mengembalikan 2025-01-28 12:12:00
SELECT TO_DATE('202501281212', 'yyyymmddhhmi');

-- Mengembalikan NULL. '2025112' tidak dapat dikonversi ke nilai tanggal standar, menyebabkan kesalahan. Seharusnya '20250112'
SELECT TO_DATE('2025112', 'yyyymmdd');

-- Mengembalikan NULL. 'Alibaba2025-12*3' tidak dapat dikonversi ke nilai tanggal standar, menyebabkan kesalahan. Seharusnya 'Alibaba2025-12*03'.
SELECT TO_DATE('Alibaba2025-12*3', 'Alibabayyyy-mm*dd');

-- Mengembalikan NULL. '2025-24-01' tidak dapat dikonversi ke nilai tanggal standar, menyebabkan kesalahan. Seharusnya '2025-01-24'.
SELECT TO_DATE('2025-24-01', 'yyyy');

-- Mengembalikan 2025-10-30 15:13:12
SELECT TO_DATE('20251030 15-13-12.345','yyyymmdd hh-mi-ss.ff3');

-- Mengembalikan NULL.
SELECT TO_DATE(NULL, 'yyyymmdd hh-mi-ss.ff3');

-- Mengembalikan NULL.
SELECT TO_DATE('20251030 15-13-12.345', NULL);

-- Mengembalikan format ISO 8601, 2025-09-24 13:39:34
SELECT TO_DATE('2025-09-24T13:39:34.119Z', 'yyyy-MM-ddThh:mi:ss.ff3Z');

Contoh data tabel

  1. Data contoh.

    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);
  2. Mengonversi kolom date3 bertipe STRING menjadi tipe DATETIME date3_to_date untuk keluaran:

    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 |
    +------------+---------------------+

Fungsi terkait

Fungsi TO_DATE merupakan bagian dari rangkaian fungsi tanggal. Untuk informasi lebih lanjut tentang fungsi perhitungan dan konversi tanggal, lihat Fungsi Tanggal.