Convertit une chaîne en valeur DATE ou DATETIME selon un modèle de format spécifié.
Syntaxe
DATETIME|DATE TO_DATE(STRING <date>[, STRING <format>])
Paramètres
| Paramètre | Obligatoire | Type | Description |
|---|---|---|---|
date |
Oui | STRING | Chaîne à convertir. Les valeurs BIGINT, DOUBLE, DECIMAL et DATETIME sont implicitement converties en STRING avant le traitement. Les chaînes au format ISO 8601 sont également prises en charge. |
format |
Non | STRING (constante) | Modèle de format à appliquer. Ne prend pas en charge les formats d'extension de date. Les caractères non reconnus comme spécificateurs de format sont ignorés lors de l'analyse. Doit contenir yyyy, et yyyy ne peut apparaître qu'une seule fois. Si cette condition n'est pas respectée, la fonction renvoie NULL. |
Spécificateurs de format
| Spécificateur | Signification | Exemple de valeur |
|---|---|---|
yyyy |
Année sur quatre chiffres | 2025 |
mm |
Mois sur deux chiffres | 01 |
dd |
Jour sur deux chiffres | 29 |
hh |
Heure (format 24 heures) | 15 |
mi |
Minute sur deux chiffres | 13 |
ss |
Seconde sur deux chiffres | 12 |
ff3 |
Milliseconde sur trois chiffres | 345 |
Valeur de retour
| Condition | Type de retour | Format |
|---|---|---|
Appel sans format |
DATE | yyyy-mm-dd |
Appel avec format |
DATETIME | yyyy-mm-dd hh:mi:ss |
date ou format est NULL |
NULL | — |
Exemples
Utilisation de base (sans format)
-- Returns 2025-01-29
SELECT TO_DATE('2025-01-29');
Chaînes de format personnalisées
Tous les exemples ci-dessous utilisent le paramètre format et renvoient une valeur DATETIME.
-- 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');
Format ISO 8601
-- Returns 2025-09-24 13:39:34
SELECT TO_DATE('2025-09-24T13:39:34.119Z', 'yyyy-MM-ddThh:mi:ss.ff3Z');
Entrées NULL
-- Returns NULL
SELECT TO_DATE(NULL, 'yyyymmdd hh-mi-ss.ff3');
-- Returns NULL
SELECT TO_DATE('20251030 15-13-12.345', NULL);
Entrées invalides
-- 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');
Exemple de données de table
-
Créez la table d'exemple et insérez des données.
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); -
Convertissez la colonne STRING
date3en DATETIME.SELECT date3, TO_DATE(date3, 'yyyy-mm-dd') AS date3_to_date FROM mf_date_fun_t;Résultat :
+------------+---------------------+ | 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 | +------------+---------------------+
Fonctions associées
TO_DATE fait partie de la suite de fonctions de date. Pour plus d'informations sur les fonctions de calcul et de conversion de dates, consultez Date functions.