TO_TIMESTAMP_NTZ convertit des données de date et d'heure de différents types en une valeur TIMESTAMP_NTZ. Trois surcharges sont disponibles : une entrée TIMESTAMP avec un fuseau horaire cible, une entrée STRING formatée et un décalage d'époque BIGINT.
Syntaxe
Surcharge 1 : Convertir TIMESTAMP en TIMESTAMP_NTZ
TIMESTAMP_NTZ TO_TIMESTAMP_NTZ(TIMESTAMP <timestamp>, STRING <time_zone>)
Surcharge 2 : Convertir une chaîne STRING formatée en TIMESTAMP_NTZ
TIMESTAMP_NTZ TO_TIMESTAMP_NTZ(STRING <date>, STRING <format> [, STRING <time_zone>])
Surcharge 3 : Convertir un décalage d'époque BIGINT en TIMESTAMP_NTZ
TIMESTAMP_NTZ TO_TIMESTAMP_NTZ(BIGINT <time>, STRING <date_part>)
Paramètres
Paramètres de la surcharge 1
|
Paramètre |
Obligatoire |
Type |
Description |
|
|
Oui |
TIMESTAMP |
Valeur |
|
|
Oui |
STRING |
Fuseau horaire cible. Pour les valeurs prises en charge, consultez la section Fuseaux horaires. |
Paramètres de la surcharge 2
|
Paramètre |
Obligatoire |
Type |
Description |
|
|
Oui |
STRING |
Chaîne représentant la date et l'heure au format spécifié par |
|
|
Oui |
STRING |
Modèle de format décrivant la structure de |
|
|
Non |
STRING |
Fuseau horaire de la chaîne d'entrée. La valeur par défaut est UTC si ce paramètre n'est pas spécifié. Pour les valeurs prises en charge, consultez la section Fuseaux horaires. |
Paramètres de la surcharge 3
|
Paramètre |
Obligatoire |
Type |
Description |
|
|
Oui |
BIGINT |
Décalage temporel numérique à convertir. |
|
|
Oui |
STRING |
Unité de la valeur |
Éléments de format
Le paramètre format de la surcharge 2 prend en charge les éléments suivants.
Éléments de date
|
Élément |
Description |
|
|
Année avec le siècle (par exemple, 2025). |
|
|
Année sans le siècle (00–99). Le zéro non significatif est facultatif. |
|
|
Mois sous forme de nombre décimal (01–12). |
|
|
Nom complet du mois (par exemple, January). |
|
|
Nom abrégé du mois (par exemple, Jan). |
|
|
Jour du mois sous forme de nombre décimal (01–31). |
|
|
Jour du mois sans zéro non significatif (1–31). Par exemple, |
|
|
Équivalent à |
Éléments d'heure
|
Élément |
Description |
|
|
Heure sur une horloge de 24 heures (00–23). |
|
|
Minute sous forme de nombre décimal (00–59). |
|
|
Seconde sous forme de nombre décimal (00–60). |
|
|
Heure au format |
|
|
Équivalent à |
|
|
Millisecondes sous forme décimale à trois chiffres (000–999). Utilisez |
|
|
Décalage numérique du fuseau horaire ( |
|
|
Secondes avec |
|
|
Secondes avec une précision complète de 6 chiffres. Par exemple, |
Valeurs de retour
Valeurs de retour de la surcharge 1
Renvoie une valeur TIMESTAMP_NTZ dans le fuseau horaire spécifié.
|
Condition |
Résultat |
|
|
Erreur |
|
|
NULL |
Valeurs de retour de la surcharge 2
Renvoie une valeur TIMESTAMP_NTZ. Le fuseau horaire de la session ou du projet n'affecte ni l'entrée ni la sortie.
|
Condition |
Résultat |
|
|
NULL |
|
|
NULL |
Valeurs de retour de la surcharge 3
Renvoie une valeur TIMESTAMP_NTZ calculée en ajoutant time à l'époque 1970-01-01 00:00:00 UTC. Le fuseau horaire de la session ou du projet n'affecte ni l'entrée ni la sortie.
|
Condition |
Résultat |
|
|
Erreur |
|
|
NULL |
Notes d'utilisation
Fuseau horaire de la session et surcharge 1 : Lorsque vous transmettez une valeur
TIMESTAMP, MaxCompute l'interprète dans le fuseau horaire actuel de la session ou du projet (odps.sql.timezone) avant de la convertir vers le fuseau horaire cible. La modification deodps.sql.timezonemodifie le résultat.Fuseau horaire de la session et surcharges 2 et 3 : Le fuseau horaire de la session ou du projet n'affecte pas la conversion. Le paramètre
time_zonede la surcharge 2 et l'arithmétique basée sur l'époque de la surcharge 3 sont indépendants deodps.sql.timezone.Gestion des valeurs NULL : Les surcharges 2 et 3 renvoient NULL pour les entrées NULL, à l'exception de
timedans la surcharge 3, qui génère une erreur. La surcharge 1 génère une erreur lorsquetimestampest NULL.Année manquante dans la surcharge 2 : Si la chaîne
formatomet un élément d'année, l'année est définie par défaut sur 1970.
Exemples
Convertir TIMESTAMP en TIMESTAMP_NTZ
Le fuseau horaire de la session est défini sur Asia/Shanghai. MaxCompute interprète l'entrée TIMESTAMP dans ce fuseau horaire et la convertit vers le fuseau horaire cible spécifié.
SET odps.sql.timezone=Asia/Shanghai;
-- Returns 2025-04-08 08:10:30.123456789
-- Asia/Shanghai (UTC+8) to Etc/GMT (UTC+0): subtract 8 hours
SELECT TO_TIMESTAMP_NTZ(TIMESTAMP '2025-04-08 16:10:30.123456789', 'Etc/GMT');
-- Returns 2025-04-08 17:10:30.123456789
-- Asia/Shanghai (UTC+8) to Asia/Tokyo (UTC+9): add 1 hour
SELECT TO_TIMESTAMP_NTZ(TIMESTAMP '2025-04-08 16:10:30.123456789', 'Asia/Tokyo');
-- Returns 2025-04-08 16:10:30.123456789
-- Same time zone: no offset applied
SELECT TO_TIMESTAMP_NTZ(TIMESTAMP '2025-04-08 16:10:30.123456789', 'Asia/Shanghai');
-- Returns NULL
SELECT TO_TIMESTAMP_NTZ(TIMESTAMP '2025-04-08 16:10:30.123456789', NULL);
Convertir une chaîne formatée en TIMESTAMP_NTZ
Le fuseau horaire de la session n'affecte pas ces requêtes. Le paramètre time_zone des deux derniers exemples contrôle la façon dont la chaîne d'entrée est interprétée.
SET odps.sql.timezone=Asia/Shanghai;
-- Returns 2017-11-11 00:00:00.123
SELECT TO_TIMESTAMP_NTZ('17-11-11 00:00:00.123', '%y-mm-dd hh:mi:ss.ff3');
-- Returns 2017-11-11 00:00:00.123
-- %y treats '0017' as year 17, then adds the century prefix: 2017
SELECT TO_TIMESTAMP_NTZ('0017-11-11 00:00:00.123', '%y-mm-dd hh:mi:ss.ff3');
-- Returns 1970-11-11 00:00:00.123
-- Year element is missing; defaults to 1970
SELECT TO_TIMESTAMP_NTZ('11-11 00:00:00.123', 'mm-dd hh:mi:ss.ff3');
-- Returns 2025-05-18 15:30:00
SELECT TO_TIMESTAMP_NTZ('2025-05-18 15:30:00 MAY', '%F %X %B');
-- Returns 2025-05-18 15:30:00
SELECT TO_TIMESTAMP_NTZ('2025-05-18 15:30:00 may', '%F %X %h');
-- Returns 2025-05-18 15:30:00
SELECT TO_TIMESTAMP_NTZ('2025-05-18 15:30:00 may', '%F %T %b');
-- Returns 2025-05-18 10:20:00
SELECT TO_TIMESTAMP_NTZ('20250518 10:20:00', 'yyyymm%e %T');
-- Returns 2025-05-18 02:30:00
-- Input includes a +07:00 offset; converted to UTC
SELECT TO_TIMESTAMP_NTZ('2025-05-18 09:30:00+07:00', '%F %H:%M:%S%Ez');
-- Returns 2025-04-08 16:10:30.123456
-- time_zone is Etc/GMT (UTC+0); no offset adjustment
SELECT TO_TIMESTAMP_NTZ('2025-04-08 16:10:30.123456', '%Y-%m-%d %H:%M:%E*S', 'Etc/GMT');
-- Returns 2025-04-08 08:10:30.123
-- Input is in Asia/Shanghai (UTC+8); converted to UTC
SELECT TO_TIMESTAMP_NTZ('2025-04-08 16:10:30.123', '%Y-%m-%d %H:%M:%E3S', 'Asia/Shanghai');
Convertir un décalage d'époque BIGINT en TIMESTAMP_NTZ
La fonction ajoute la valeur time à l'époque 1970-01-01 00:00:00 UTC. Le paramètre date_part contrôle l'unité. Les exemples suivants utilisent la même valeur BIGINT pour montrer comment l'unité affecte le résultat.
SET odps.sql.timezone=Asia/Shanghai;
-- Same input value (99999341234), three different units:
-- Returns 1973-03-03 09:35:41.234 (milliseconds)
SELECT TO_TIMESTAMP_NTZ(99999341234, 'MILLIS');
-- Returns 1970-01-02 03:46:39.341234 (microseconds)
SELECT TO_TIMESTAMP_NTZ(99999341234, 'MICROS');
-- Returns 1970-01-01 00:01:39.999341234 (nanoseconds)
SELECT TO_TIMESTAMP_NTZ(99999341234, 'NANOS');
-- Negative values represent offsets before the epoch
-- Returns 1966-10-31 14:24:18.766
SELECT TO_TIMESTAMP_NTZ(-99999341234, 'MILLIS');
-- Returns NULL
SELECT TO_TIMESTAMP_NTZ(99999341234, NULL);
Rubriques connexes
TO_TIMESTAMP_NTZ est une fonction de date. Pour d'autres fonctions de calcul et de conversion de dates, consultez la page Fonctions de date.