Catégories :

Fonctions de conversion , Fonctions de date et d’heure

TO_TIME , TIME

Convertit une expression d’entrée en heure. Si la saisie est NULL, renvoie NULL.

Voir aussi :

TRY_TO_TIME

Syntaxe

TO_TIME( <string_expr> [, <format> ] )
TO_TIME( <timestamp_expr> )
TO_TIME( '<integer>' )
TO_TIME( <variant_expr> )

TIME( <string_expr> )
TIME( <timestamp_expr> )
TIME( '<integer>' )
TIME( <variant_expr> )

Arguments

Obligatoire :

expr_chaine ou expr_horodatage ou expr_variante ou entier

Expression à convertir en une heure :

  • Pour expr_chaine, le résultat de la conversion de la chaîne en heure.

  • Pour expr_horodatage, l’heure de la valeur d’entrée.

  • Pour une chaîne contenant un entier, la valeur redimensionnée est traitée comme le nombre de secondes depuis minuit. Si la valeur redimensionnée est supérieure ou égale à 86 400 (nombre de secondes dans une journée), alors le calcul est effectué avec un modulus 86 400 ; par exemple, 86 401 correspond à une seconde après minuit.

    Pour des informations sur le redimensionnement (scaling), voir les notes sur l’utilisation.

    L’utilisation d’entiers entre guillemets comme entrées est obsolète.

  • Pour expr_variante :

    • Si la variante contient une chaîne au format TIME (« HH:MI:SS »), une conversion de chaîne est effectuée.

    • Si la variante contient une chaîne au format INTEGER, une conversion de chaîne est effectuée et la valeur est traitée comme le nombre de secondes depuis minuit (modulus 86400 si nécessaire).

    • Si la variante contient la valeur JSON null, la sortie est NULL.

Pour toutes les autres valeurs, une erreur de conversion est générée.

Facultatif :

format

Spécificateur de format d’heure pour expr_chaine ou AUTO, qui précise que Snowflake doit automatiquement détecter le format à utiliser. Pour plus d’informations, voir Formats de date et heure dans les fonctions de conversion.

Valeur par défaut : valeur actuelle du paramètre de session TIME_INPUT_FORMAT (généralement AUTO)

Renvoie

Le type de données de la valeur renvoyée est TIME.

Notes sur l’utilisation

  • Si le format du paramètre d’entrée est une chaîne contenant un entier, la valeur est redimensionnée comme suit :

  • Une fois la chaîne convertie en entier, l’entier est traité comme un nombre de secondes, millisecondes, microsecondes ou nanosecondes après le début de l’epoch Unix (1970-01-01 00:00:00.000000000 UTC).

    • Si l’entier est inférieur à 31536000000 (le nombre de millisecondes dans une année), alors la valeur est traitée comme un nombre de secondes.

    • Si la valeur est supérieure ou égale à 31536000000 et inférieure à 31536000000000, la valeur est alors traitée en millisecondes.

    • Si la valeur est supérieure ou égale à 31536000000000 et inférieure à 31536000000000000, la valeur est alors traitée en microsecondes.

    • Si la valeur est supérieure ou égale à 31536000000000000, alors la valeur est traitée comme des nanosecondes.

    Prudence

    Actuellement, les valeurs négatives sont toujours traitées comme des secondes. Par exemple, -31536000000000000000 est traité comme un nombre de secondes avant l’année 1970, bien que son échelle implique qu’il est destiné à être utilisé comme nanosecondes.

    Ce comportement pourrait changer à l’avenir.

    Prudence

    Avertissement de dépréciation : les futures versions de Snowflake pourraient interpréter automatiquement les valeurs entières converties en chaînes comme des secondes plutôt que comme des millisecondes, microsecondes ou nanosecondes. Snowflake vous recommande d’appeler TO_DATE, TO_TIME ou TO_TIMESTAMP avec des chaînes qui contiennent des entiers uniquement lorsque ces entiers sont destinés à être interprétés comme des secondes.

  • Si plusieurs lignes sont évaluées (par exemple, si l’entrée est le nom de colonne d’une table qui contient plus de deux lignes), la première valeur traitée détermine si toutes les valeurs suivantes sont traitées en secondes, millisecondes, microsecondes ou nanosecondes.

    Si la première valeur est supérieure ou égale à 31536000000, toutes les valeurs seront traitées en millisecondes, même si certaines valeurs restantes sont inférieures à 31536000000. Une logique similaire s’applique aux microsecondes et nanosecondes.

  • Contrairement à la fonction TO_TIME, la fonction TIME ne prend pas en charge le paramètre facultatif format.

Exemples

Ces exemples illustrent la fonction TO_TIME.

SELECT TO_TIME('13:30:00'), TIME('13:30:00');
+---------------------+------------------+
| TO_TIME('13:30:00') | TIME('13:30:00') |
|---------------------+------------------|
| 13:30:00            | 13:30:00         |
+---------------------+------------------+
SELECT TO_TIME('13:30:00.000'), TIME('13:30:00.000');
+-------------------------+----------------------+
| TO_TIME('13:30:00.000') | TIME('13:30:00.000') |
|-------------------------+----------------------|
| 13:30:00                | 13:30:00             |
+-------------------------+----------------------+

Cet exemple montre comment utiliser la fonction TO_TIME pour traiter des séparateurs de champs autres que les deux points par défaut (cet exemple utilise le caractère de point comme séparateur entre les heures et les minutes et entre les minutes et les secondes) :

SELECT TO_TIME('11.15.00', 'HH24.MI.SS');
+-----------------------------------+
| TO_TIME('11.15.00', 'HH24.MI.SS') |
|-----------------------------------|
| 11:15:00                          |
+-----------------------------------+