Tous les produits
Search
Centre de documentation

MaxCompute:TO_DATE

Dernière mise à jour :Aug 10, 2026

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

  1. 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);
  2. Convertissez la colonne STRING date3 en 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.