Tous les produits
Search
Centre de documentation

MaxCompute:TRUNC_TIME

Dernière mise à jour :Aug 12, 2026

La fonction TRUNC_TIME tronque une valeur de date ou d'heure à l'unité de temps spécifiée et renvoie une chaîne de type 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, TIMESTAMP_NTZ.

Avec l'édition des types de données MaxCompute V1.0, le paramètre date accepte également une valeur STRING au format DATETIME (yyyy-mm-dd hh:mi:ss, par exemple 2025-07-21 00:00:00). Cette valeur est implicitement convertie en DATETIME avant le calcul.

date_part

Obligatoire. Unité de temps cible pour la troncature. Doit être une constante STRING non sensible à la casse.

Valeur

Tronque à

Format de sortie

year

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

yyyy

month

Limite du mois — supprime le jour et l'heure

yyyy-mm

day

Limite du jour — supprime la composante horaire

yyyy-mm-dd

hour

Limite de l'heure — supprime les minutes et les secondes

yyyy-mm-dd hh:mm:ss

Valeur de retour

Renvoie toujours une valeur 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 un STRING, que l'entrée soit de type DATE, DATETIME, TIMESTAMP ou TIMESTAMP_NTZ.

Notes d'utilisation

Conversion de fuseau horaire pour les types associés

Pour les types de données liés aux fuseaux horaires, tels que DATETIME et TIMESTAMP, TRUNC_TIME convertit d'abord l'heure locale en UTC, puis tronque selon date_part avant de renvoyer le résultat sous forme de STRING. La date obtenue peut donc différer de la date locale.

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

Troncature et extraction

La troncature diffère de l'extraction. TRUNC_TIME arrondit un horodatage à la baisse jusqu'à une limite temporelle et renvoie un STRING. Pour extraire une composante spécifique (comme le numéro d'année ou de mois) sous forme d'entier, utilisez une fonction d'extraction de date. Pour plus d'informations, consultez la rubrique Fonctions de date.

Cas d'erreur

  • Une erreur survient si date ne correspond pas à l'un des types pris en charge (DATE, DATETIME, TIMESTAMP, TIMESTAMP_NTZ).

  • Une erreur survient si date_part vaut NULL.

Exemples

Entrée DATETIME

Le fuseau horaire de la session est UTC+8 (Asia/Shanghai). L'entrée DATETIME '2025-06-03 07:15:08' est convertie en UTC sous la forme 2025-06-02 23:15:08 avant la troncature.

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 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 STRING (édition des types de données MaxCompute V1.0 uniquement)

Pour utiliser une valeur STRING comme entrée, définissez l'édition des types de données sur V1.0. La chaîne est alors implicitement convertie en 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 consulter les fonctions associées au calcul et à la conversion des dates, reportez-vous à la rubrique Fonctions de date.