Mengonversi nilai tanggal dari tipe INT atau VARCHAR ke tipe data DATE. Jika parameter format tidak ditentukan, input harus mengikuti format default yyyy-MM-dd.
Sintaksis
Date TO_DATE(INT time)
Date TO_DATE(VARCHAR date)
Date TO_DATE(VARCHAR date, VARCHAR format)
Parameter
| Parameter | Tipe data | Deskripsi |
|---|---|---|
time |
INT | Jumlah hari yang telah berlalu sejak epoch time 1 Januari 1970 pukul 00:00:00 UTC. Contohnya, 200 menghasilkan 1970-07-20. Catatan
Perilaku ini hanya berlaku untuk Ververica Runtime (VVR) 8.0.6 dan versi yang lebih baru. Untuk versi VVR sebelum 8.0.6, nilai tersebut secara implisit dikonversi ke STRING. |
date |
VARCHAR | String tanggal. Format default-nya adalah yyyy-MM-dd. Contohnya, '2017-09-15'. |
format |
VARCHAR | Pola format tanggal kustom. Contohnya, 'yyyyMMdd' atau 'MMddyyyy'. |
Catatan penggunaan
-
Perilaku parameter
time(INT) berbeda tergantung pada versi VVR:-
VVR 8.0.6 dan versi yang lebih baru:
timediinterpretasikan sebagai jumlah hari sejak epoch (1 Januari 1970 pukul 00:00:00 UTC). -
VVR versi sebelum 8.0.6:
timesecara implisit dikonversi ke STRING sebelum diproses.
-
-
Jika parameter
formattidak ditentukan untuk input VARCHAR, sistem akan menerapkan format defaultyyyy-MM-dd. Apabila data hulu menggunakan format lain—misalnya MySQL DATETIME (yyyy-MM-dd HH:mm:ss)—Anda harus secara eksplisit menentukan parameterformatsesuai dengan format aktualnya. Jika tidak, proses parsing akan gagal dan mengembalikan hasil yang salah seperti1970-01-01.
Contoh
Contoh berikut menggunakan tabel T1 sebagai sumber data.
Tabel T1
| date1 (INT) | date2 (VARCHAR) | date3 (VARCHAR) | date4 (VARCHAR) | date5 (VARCHAR) |
|---|---|---|---|---|
| 200 | 2017-09-15 | 20170915 | 09152017 | 092017 |
Mengonversi input INT
Gunakan bilangan bulat yang merepresentasikan jumlah hari sejak epoch.
SELECT TO_DATE(date1) AS var1
FROM T1;
| var1 (DATE) |
|---|
| 1970-07-20 (VVR 8.0.6 dan versi yang lebih baru) |
| 0200-01-01 (VVR versi sebelum 8.0.6) |
Mengonversi input VARCHAR menggunakan format default
Jika input sudah dalam format yyyy-MM-dd, Anda dapat mengabaikan parameter format.
SELECT TO_DATE(date2) AS var2
FROM T1;
| var2 (DATE) |
|---|
| 2017-09-15 |
Mengonversi input VARCHAR menggunakan format kustom
Gunakan pola format yang sesuai dengan struktur string input.
SELECT TO_DATE(date3, 'yyyyMMdd') AS var3,
TO_DATE(date4, 'MMddyyyy') AS var4,
TO_DATE(date5, 'MMyyyy') AS var5
FROM T1;
| var3 (DATE) | var4 (DATE) | var5 (DATE) |
|---|---|---|
| 2017-09-15 | 2017-09-15 | 2017-09-01 |
Lanjutan
-
TO_TIMESTAMP_TZ: Mengonversi nilai tanggal VARCHAR ke TIMESTAMP berdasarkan zona waktu tertentu.
-
DATE_ADD: Mengembalikan tanggal setelah menambahkan jumlah hari tertentu.