Belirtilen biçim desenini kullanarak bir dizgiyi DATE veya DATETIME değerine dönüştürür.
Sözdizimi
DATETIME|DATE TO_DATE(STRING <date>[, STRING <format>])
Parametreler
| Parametre | Gerekli | Tür | Açıklama |
|---|---|---|---|
date |
Evet | STRING | Dönüştürülecek dizgi. BIGINT, DOUBLE, DECIMAL ve DATETIME değerleri işlenmeden önce örtük olarak STRING türüne dönüştürülür. ISO 8601 biçimindeki dizgiler de desteklenir. |
format |
Hayır | STRING (sabit) | Uygulanacak biçim deseni. Tarih genişletme biçimlerini desteklemez. Biçim belirleyicisi olarak tanınmayan karakterler ayrıştırma sırasında yoksayılır. İçinde mutlaka yyyy bulunmalıdır ve yyyy yalnızca bir kez yer alabilir. Bu koşul sağlanmazsa işlev NULL döndürür. |
Biçim belirleyicileri
| Belirleyici | Anlamı | Örnek değer |
|---|---|---|
yyyy |
Dört basamaklı yıl | 2025 |
mm |
İki basamaklı ay | 01 |
dd |
İki basamaklı gün | 29 |
hh |
Saat (24 saatlik dilim) | 15 |
mi |
İki basamaklı dakika | 13 |
ss |
İki basamaklı saniye | 12 |
ff3 |
Üç basamaklı milisaniye | 345 |
Dönüş değeri
| Koşul | Dönüş türü | Biçim |
|---|---|---|
format belirtilmeden çağrılırsa |
DATE | yyyy-mm-dd |
format belirtilerek çağrılırsa |
DATETIME | yyyy-mm-dd hh:mi:ss |
date veya format NULL ise |
NULL | — |
Örnekler
Temel kullanım (biçim yok)
-- Returns 2025-01-29
SELECT TO_DATE('2025-01-29');
Özel biçim dizgileri
Aşağıdaki tüm örneklerde format parametresi kullanılır ve sonuç olarak bir DATETIME değeri döndürülür.
-- Returns 2025-01-27 00:00:00
SELECT TO_DATE('Alibaba2025-01*27', 'Alibabayyyy-mm*dd');
-- Returns 2025-01-12 00:00:00
SELECT TO_DATE('20250112', 'yyyymmdd');
-- Returns 2025-01-28 12:12:00
SELECT TO_DATE('202501281212', 'yyyymmddhhmi');
-- Returns 2025-10-30 15:13:12
SELECT TO_DATE('20251030 15-13-12.345', 'yyyymmdd hh-mi-ss.ff3');
ISO 8601 biçimi
-- Returns 2025-09-24 13:39:34
SELECT TO_DATE('2025-09-24T13:39:34.119Z', 'yyyy-MM-ddThh:mi:ss.ff3Z');
NULL girişler
-- Returns NULL
SELECT TO_DATE(NULL, 'yyyymmdd hh-mi-ss.ff3');
-- Returns NULL
SELECT TO_DATE('20251030 15-13-12.345', NULL);
Geçersiz girişler
-- Returns NULL. '2025112' does not match 'yyyymmdd' (day is missing a digit; use '20250112')
SELECT TO_DATE('2025112', 'yyyymmdd');
-- Returns NULL. Day value '3' is not two digits (use 'Alibaba2025-12*03')
SELECT TO_DATE('Alibaba2025-12*3', 'Alibabayyyy-mm*dd');
-- Returns NULL. '2025-24-01' cannot be converted to a standard date value. It should be '2025-01-24'.
SELECT TO_DATE('2025-24-01', 'yyyy');
Tablo verisi örneği
-
Örnek tabloyu oluşturun ve veri ekleyin.
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); -
STRING sütunu
date3değerini DATETIME türüne dönüştürün.SELECT date3, TO_DATE(date3, 'yyyy-mm-dd') AS date3_to_date FROM mf_date_fun_t;Sonuç:
+------------+---------------------+ | 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 | +------------+---------------------+
İlgili işlevler
TO_DATE, tarih işlevleri paketinin bir parçasıdır. Tarih hesaplama ve dönüştürme işlevleri hakkında daha fazla bilgi için bkz. Date functions.