Tous les produits
Search
Centre de documentation

MaxCompute:TRUNC_TIME

Dernière mise à jour :Sep 22, 2026

La fonction TRUNC_TIME tronque une valeur de date ou d'heure à l'unité temporelle spécifiée et renvoie une chaîne de caractères (STRING).

Syntaxe

STRING TRUNC_TIME(DATE|DATETIME|TIMESTAMP|TIMESTAMP_NTZ <date>, STRING <date_part>)

-- Returns 2025-06.
SELECT TRUNC_TIME(DATETIME '2025-06-10 14:20:30', 'month');

Paramètres

date

Obligatoire. Date ou horodatage à tronquer. Types acceptés : DATE, DATETIME, TIMESTAMP et TIMESTAMP_NTZ.

Dans la version 1.0 des types de données, le paramètre date accepte également une valeur STRING au format DATETIME (par exemple, yyyy-mm-dd hh:mi:ss, comme 2025-07-21 00:00:00). Le système convertit implicitement cette valeur en type DATETIME avant le calcul.

date_part

Obligatoire. Unité temporelle de troncature. Doit être une constante de type STRING, sans sensibilité à la casse.

Valeur

Tronque jusqu'à

Format de sortie

year

Début de l'année — supprime le mois, le jour et l'heure

yyyy

month

Début du mois — supprime le jour et l'heure

yyyy-mm

day

Début du jour — supprime la composante horaire

yyyy-mm-dd

hour

Début de l'heure — supprime les minutes et les secondes

yyyy-mm-dd hh:mm:ss

Valeur de retour

Renvoie toujours une chaîne de type STRING. Le format de sortie dépend du paramètre date_part, comme indiqué dans le tableau ci-dessus.

Contrairement aux fonctions qui conservent le type d'entrée, TRUNC_TIME renvoie systématiquement une chaîne STRING, que l'entrée soit de type DATE, DATETIME, TIMESTAMP ou TIMESTAMP_NTZ.

Notes d'utilisation

Conversion de fuseau horaire pour les types liés aux fuseaux horaires

Pour les types de données associés aux fuseaux horaires, tels que DATETIME et TIMESTAMP, la fonction TRUNC_TIME convertit d'abord l'heure locale en UTC, puis tronque selon le paramètre date_part avant de renvoyer le résultat sous forme de chaîne. La date de sortie peut donc différer de la date locale.

Par exemple, la valeur DATETIME '2025-06-03 07:15:08' en UTC+8 correspond à 2025-06-02 23:15:08 en UTC. Une troncature à l'unité day renvoie alors 2025-06-02 et non 2025-06-03.

Différence entre troncature et extraction

Ne confondez pas troncature et extraction. La fonction TRUNC_TIME arrondit un horodatage à la borne temporelle inférieure et renvoie une chaîne. Pour extraire une composante spécifique (comme le numéro de l'année ou du mois) sous forme d'entier, utilisez une fonction d'extraction de date. Pour plus d'informations, consultez la page Fonctions de date.

Cas d'erreur

  • Si le paramètre date n'est pas de l'un des types pris en charge (DATE, DATETIME, TIMESTAMP ou TIMESTAMP_NTZ), le système renvoie une erreur.

  • Si le paramètre date_part a la valeur NULL, le système renvoie une erreur.

Exemples

Entrée de type DATETIME

Le fuseau horaire de la session est défini sur UTC+8 (Asia/Shanghai). Avant la troncature, le système convertit l'entrée DATETIME '2025-06-03 07:15:08' en UTC, ce qui donne 2025-06-02 23:15:08.

SET odps.sql.timezone=Asia/Shanghai;

SELECT
    TRUNC_TIME(DATETIME '2025-06-03 07:15:08', 'year')  AS truncated_to_year,
    TRUNC_TIME(DATETIME '2025-06-03 07:15:08', 'month') AS truncated_to_month,
    TRUNC_TIME(DATETIME '2025-06-03 07:15:08', 'day')   AS truncated_to_day,
    TRUNC_TIME(DATETIME '2025-06-03 07:15:08', 'hour')  AS truncated_to_hour;

-- Result:
+--------------------+--------------------+--------------------+---------------------+
| truncated_to_year  | truncated_to_month | truncated_to_day   | truncated_to_hour   |
+--------------------+--------------------+--------------------+---------------------+
| 2025               | 2025-06            | 2025-06-02         | 2025-06-02 23:00:00 |
+--------------------+--------------------+--------------------+---------------------+

Entrée de type DATE

SELECT
    TRUNC_TIME(DATE '2025-06-10', 'year')  AS truncated_to_year,
    TRUNC_TIME(DATE '2025-06-10', 'month') AS truncated_to_month,
    TRUNC_TIME(DATE '2025-06-10', 'day')   AS truncated_to_day;

-- Result:
+--------------------+--------------------+------------------+
| truncated_to_year  | truncated_to_month | truncated_to_day |
+--------------------+--------------------+------------------+
| 2025               | 2025-06            | 2025-06-10       |
+--------------------+--------------------+------------------+

Entrée de type STRING (uniquement pour l'édition V1.0 des types de données MaxCompute)

Pour utiliser une valeur STRING en entrée, configurez l'édition des types de données sur V1.0. Le système convertit implicitement la chaîne en type DATETIME, puis en UTC avant la troncature.

-- Set the time zone to UTC+8.
SET odps.sql.timezone=Asia/Shanghai;
-- Set the data type edition to V1.0 to allow implicit STRING-to-DATETIME conversion.
SET odps.sql.type.system.odps2=false;

SELECT TRUNC_TIME('2025-06-03 15:30:30', 'hour');

-- Result (local time 15:30 UTC+8 converts to 07:00 UTC, then truncated to hour):
+---------------------+
| _c0                 |
+---------------------+
| 2025-06-03 07:00:00 |
+---------------------+

Rubriques connexes

Pour découvrir d'autres fonctions de calcul et de conversion de dates, consultez la page Fonctions de date.