Partager via


parse_timestamp Fonction

S’applique à :check marqué oui Databricks Runtime 18.1 et versions ultérieures

S’il expr s’agit d’une chaîne, l’analyse en fonction TIMESTAMP du premier modèle correspondant dans la liste donnée de formats. Un ou plusieurs formats peuvent référencer une liste prédéfinie de formats. S’il expr s’agit d’un type numérique, l’analyse en tant qu’horodatage Unix.

Syntaxe

parse_timestamp(expr [, { pattern [...] } ])

Arguments

  • expr : chaîne ou valeur numérique à analyser dans un TIMESTAMP. Les types acceptés sont les suivants :
    • TINYINT, , SMALLINTINT, ,BIGINT
    • FLOAT, DOUBLE
    • DECIMAL (jusqu’à 18 précisions)
    • STRING
  • modèle : liste facultative de modèles d’horodatage ou référence à une liste prédéfinie telle que #iso8601 ou #rfc3339. Les modèles d’horodatage doivent être une chaîne constante. Si aucun modèle n’est spécifié, il équivaut à spécifier #extended.

Retours

Représentant TIMESTAMP l’analyse expr.

Si la expr chaîne est une chaîne, elle est analysée en fonction du premier modèle correspondant. Si aucun des modèles ne correspond, la fonction génère une erreur.

Si la expr valeur est numérique, elle est toujours analysée en tant qu’horodatage Unix.

Si expr c’est NULLle cas, la fonction retourne NULL.

Pour retourner NULL au lieu d’une erreur lors de l’analyse échoue, utilisez try_parse_timestamp la fonction.

Remarques

  • Si la liste de modèles contient des NULL valeurs, elles sont ignorées. Si tous les modèles fournis sont NULL, le résultat est NULL.
  • Si l’horodatage correspond à un modèle contenant aucune information de fuseau horaire, il est analysé dans le fuseau horaire de session.

Conditions de l’erreur

Exemples

-- Parse timestamp according to default pattern list
> SELECT parse_timestamp('2024-12-09T19:30:01');
 2024-12-09 19:30:01.000

-- Parse a microsecond epoch timestamp using the unix pattern list
> SELECT parse_timestamp('1733772601000000', '#unix');
 2024-12-09 19:30:01.000

-- Bad `expr` that does not match any pattern
> SELECT parse_timestamp('bad input');
  Error: CANNOT_PARSE_TIMESTAMP

-- Use try_parse_timestamp to return NULL instead of error
> SELECT try_parse_timestamp('bad input');
 NULL

-- Extend the default pattern list with custom patterns
> SELECT parse_timestamp(col, "#extended", "dd MMM, yyyy", "MMM d; yy") FROM VALUES ('2024-12-01'), ('02 Dec, 2024'), ('DEC 3; 24') AS t(col)
 2024-12-01 00:00:00.000
 2024-12-02 00:00:00.000
 2024-12-03 00:00:00.000

Référence de modèle

parse_timestamp et try_parse_timestamp la fonction utilisent un jeu de modèles qui diffère de certaines façons du modèle datetime standard utilisé par to_timestamp. Le tableau suivant répertorie tous les symboles de modèle et indique si chacun d’eux est pris en charge :

Symbol Signification Exemples Support
U Unix Voir la remarque ci-dessous Soutenu
G Ère Ap. J.-C. ; après Jésus-Christ Non pris en charge
y année 2020 ; 20 Soutenu
D Jour de l’année 189 Non pris en charge
M/L Mois de l’année 7 ; 07 ; juil. ; juillet Soutenu
d Jour du mois 28 Soutenu
Q/q Trimestre de l’année 3 ; 03 ; T3 ; 3e trimestre Non pris en charge
E Jour de la semaine Mar. ; mardi Soutenu
F Jour de la semaine aligné dans le mois 3 Non pris en charge
a Matin ou après-midi PM Soutenu
h Heure format 12 h (1 à 12) 12 Soutenu
K Heure format 12 h (0 à 11) 0 Soutenu
k Heure format 24 h (1 à 24) 1 Non pris en charge
H Heure format 24 h (0 à 23) 0 Soutenu
m Minute de l’heure 30 Soutenu
s Seconde de la minute 55 Soutenu
S Fraction de seconde 978 Soutenu
V ID de fuseau horaire Amérique/Los Angeles ; Z ; -08:30 Soutenu
z Nom du fuseau horaire Pacific Standard Time ; PST Soutenu
O Décalage de zone localisée GMT+8 ; GMT+08:00 ; UTC-08:00 Soutenu
X décalage interzone 'Z' pour zéro Z; -08; -0830; -08:30 Pris en charge (1 à 3 chiffres)
x Décalage de zone +0000; -08; -0830; -08:30 Pris en charge (1 à 3 chiffres)
Z Décalage de zone +0000; -0800; -08:00 Soutenu
# liste de modèles #common, #iso8601 Soutenu

Note

Modèle Unix (U) : La #unix liste de modèles analyse les horodatages d’époque Unix. Pour les dates comprises entre 1971-08-03 et 3554-06-09, l’implémentation peut lever l’ambiguïté et analyser les horodatages Unix en secondes, microsecondes et nanosecondes. Les dates en dehors de cette plage peuvent ne pas analyser ou analyser incorrectement. Les entiers négatifs ne sont pas pris en charge. Les valeurs fractionnelles sont prises en charge jusqu’à 9 décimales et sont tronquées pour correspondre à la précision du type de résultat.

Paramètres régionaux : Les espaces réservés de modèle ne prennent pas en charge les paramètres régionaux. Les noms de mois et de jour sont pris en charge uniquement en anglais.

Listes de modèles

Vous pouvez passer une liste de modèles prédéfinie par nom (par exemple#extended, , #iso8601#unix). Les listes de modèles suivantes sont disponibles :

  • common — Modèles couramment trouvés non définis par une norme
  • iso8601
  • rfc1036, rfc1123, rfc2822, rfc3164, rfc3339, rfc4287, rfc5322, rfc5424, rfc6265, rfc7231, rfc822, rfc850, rfc9110, rfc9557
  • unix — Horodatages d’époque Unix uniquement
  • étendue — Union de toutes les listes ci-dessus ; également la valeur par défaut lorsqu’aucun modèle n’est spécifié
  • extended-dmy : étendu avec des formats spécifiques aux paramètres régionaux DMY
  • extended-mdy : étendu avec des formats spécifiques aux paramètres régionaux MDY