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 |
|
|
Limite de l'année — supprime le mois, le jour et l'heure |
|
|
|
Limite du mois — supprime le jour et l'heure |
|
|
|
Limite du jour — supprime la composante horaire |
|
|
|
Limite de l'heure — supprime les minutes et les secondes |
|
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
datene correspond pas à l'un des types pris en charge (DATE,DATETIME,TIMESTAMP,TIMESTAMP_NTZ).Une erreur survient si
date_partvautNULL.
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.