Types de données de date et heure¶
Snowflake prend en charge les types de données pour la gestion des dates, des heures et des horodatages (date + heure combinées). Snowflake prend également en charge les formats pour les constantes de chaîne utilisées lors de la manipulation des dates, des heures et des horodatages.
Types de données¶
Snowflake prend en charge les types de données de date et d’heure suivants :
Note
Pour les données DATE et TIMESTAMP, Snowflake recommande d’utiliser des années comprises entre 1582 et 9999. Snowflake accepte certaines années en dehors de cette plage, mais les années antérieures à 1582 doivent être évitées en raison des limitations du calendrier grégorien.
DATE¶
Snowflake prend en charge un seul type de données DATE pour stocker les dates (sans éléments horaires).
DATE accepte les dates sous les formes les plus courantes (YYYY-MM-DD, DD-MON-YYYY, etc.).
De plus, toutes les valeurs TIMESTAMP acceptées sont des entrées valides pour les dates ; cependant, les informations TIME sont tronquées.
DATETIME¶
DATETIME est synonyme de TIMESTAMP_NTZ.
Type de données d’intervalle¶
Les types de données d’intervalle stockent des valeurs qui représentent une durée de temps. Vous pouvez calculer un intervalle comme la différence entre deux dates ou heures. Un intervalle définit uniquement une durée ; il n’a donc pas de début ou de point de fin dans le temps. Par exemple, vous pouvez définir un intervalle comme trois ans et sept mois.
Snowflake prend en charge les variantes année-mois suivantes des types de données d’intervalle :
Type de données |
Description |
|---|---|
INTERVAL YEAR |
Représente une durée en années. |
INTERVAL YEAR TO MONTH |
Représente une durée en années et en mois. |
INTERVAL MONTH |
Représente une durée en mois. |
Snowflake prend en charge les variantes jour-heure suivantes des types de données d’intervalle :
Type de données |
Description |
|---|---|
INTERVAL DAY |
Représente une durée en jours. |
INTERVAL DAY TO HOUR |
Représente une durée en jours et en heures. |
INTERVAL DAY TO MINUTE |
Représente une durée en jours, en heures et en minutes. |
INTERVAL DAY TO SECOND |
Représente une durée en jours, en heures, en minutes, en secondes et en fractions de secondes. |
INTERVAL HOUR |
Représente une durée en heures. |
INTERVAL HOUR TO MINUTE |
Représente une durée en heures et en minutes. |
INTERVAL HOUR TO SECOND |
Représente une durée en heures, en minutes, en secondes et en fractions de secondes. |
INTERVAL MINUTE |
Représente une durée en minutes. |
INTERVAL MINUTE TO SECOND |
Représente une durée en minutes, en secondes et en fractions de secondes. |
INTERVAL SECOND |
Représente une durée en secondes et en fractions de secondes. |
Les sections suivantes décrivent plus en détail les types de données d’intervalle :
Note
Vous pouvez également utiliser des constantes d’intervalle pour le calcul de la date et de l’heure. Cependant, les constantes d’intervalle ne prennent pas en charge le stockage d’intervalle comme type de colonne.
Avantages des types de données d’intervalle¶
Les types de données d’intervalle offrent les avantages suivants :
Assurez un calcul de date précis et sans ambiguïté.
Éliminez la nécessité d’effectuer manuellement des opérations de conversion et de transformation à partir de durées basées sur des nombres entiers.
Optimisez le stockage des données qui représentent des intervalles de temps.
Optimisez l’exécution des requêtes pour les données de durée.
Simplifiez la migration des données des bases de données tierces, telles que Databricks, Oracle et Teradata.
Conformez-vous entièrement aux normes ANSI.
Syntaxe des types de données d’intervalle¶
Pour spécifier un type de données d’intervalle, utilisez la syntaxe suivante :
Où :
Propriétés :
precisioncorrespond au nombre total de chiffres autorisés. La précision peut varier de1à9.Par défaut :
9fractional_seconds_precisioncorrespond au nombre de chiffres de la partie fractionnaire d’une seconde. La précision temporelle peut varier de0(secondes) à9(nanosecondes).Par défaut :
9
Utilisez cette syntaxe lorsque vous spécifiez un type de données d’intervalle. Par exemple, la table suivante contient une colonne duration de type INTERVAL YEAR TO MONTH :
Représentation des valeurs d’intervalle¶
Vous pouvez représenter une valeur d’intervalle en utilisant un littéral d’intervalle ou un format d’intervalle :
Littéraux d’intervalle¶
Un littéral d’intervalle est une expression qui spécifie une durée dans un littéral de chaîne. Utilisez la syntaxe suivante pour spécifier un littéral d’intervalle :
Où :
signest un symbole facultatif qui spécifie une durée positive (+) ou négative (-).Par défaut :
+.stringest une valeur qui représente une durée.yearMonthQualifierest un qualificatif défini dans Syntaxe des types de données d’intervalle.dayTimeQualifierest un qualificatif défini dans Syntaxe des types de données d’intervalle.
Formats d’intervalle¶
Les littéraux de chaîne dans des formats spécifiques peuvent représenter des valeurs d’intervalle.
Pour spécifier des valeurs pour les années et les mois, utilisez le format suivant :
Où :
signest un symbole obligatoire qui spécifie une durée positive (+) ou négative (-).Par défaut :
+.Ycorrespond au nombre d’années. Le nombre de chiffres autorisés (précision) dépend du type de données de la valeur.MMcorrespond à deux chiffres pour le nombre de mois, de00à11.
Pour spécifier des valeurs de jours, d’heures, de secondes et de fractions de seconde, utilisez le format suivant :
Où :
signest un symbole obligatoire qui spécifie une durée positive (+) ou négative (-).Par défaut :
+.Dcorrespond au nombre de jours. Le nombre de chiffres autorisés (précision) dépend du type de données de la valeur.Omettez
Dpour les valeurs des types suivants :INTERVAL HOUR
INTERVAL HOUR TO MINUTE
INTERVAL HOUR TO SECOND
INTERVAL MINUTE
INTERVAL MINUTE TO SECOND
INTERVAL SECOND
HH24correspond à deux chiffres pour le nombre d’heures, de00à23.Omettez
HH24pour les valeurs des types suivants :INTERVAL DAY
INTERVAL MINUTE
INTERVAL MINUTE TO SECOND
INTERVAL SECOND
MIcorrespond à deux chiffres pour le nombre de minutes, de00à59.Omettez
MIpour les valeurs des types suivants :INTERVAL DAY TO HOUR
INTERVAL DAY
INTERVAL HOUR
INTERVAL SECOND
SScorrespond à deux chiffres pour le nombre de secondes, de00à59.Omettez
SSpour les valeurs des types suivants :INTERVAL DAY
INTERVAL DAY TO HOUR
INTERVAL DAY TO MINUTE
INTERVAL HOUR
INTERVAL HOUR TO MINUTE
INTERVAL MINUTE
Fcorrespond au nombre de fractions de secondes pour les types de données qui incluent des secondes. Le nombre de chiffres autorisés (précision) dépend du type de données de la valeur.
Les notes sur l’utilisation suivantes s’appliquent aux littéraux de chaîne au format d’intervalle :
La représentation littérale de chaîne s’applique lorsque vous utilisez la fonction CAST ou TO_CHAR pour convertir explicitement des intervalles en chaînes de texte.
Les zéros de début dans un champ spécifient la précision.
Exemples de valeurs d’intervalle¶
Le tableau suivant montre comment représenter différentes valeurs d’intervalle. Les valeurs indiquées dans le tableau sont conformes aux règles suivantes pour les valeurs d’intervalle :
Pour les valeurs positives, le signe plus
+est facultatif pour les valeurs littérales d’intervalle, mais obligatoire pour les valeurs de format d’intervalle.Dans les valeurs littérales d’intervalle, la valeur entre parenthèses spécifie la précision, qui correspond au nombre de chiffres autorisés. Par exemple,
YEAR(3)précise que trois chiffres sont autorisés pour l’année.Dans les valeurs de format d’intervalle, le champ principal (le champ de début) ne comprend pas de zéros de début. Les champs subordonnés utilisent un nombre fixe de chiffres. Par exemple, dans une valeur YEAR TO MONTH comme
+1-08, le champ année n’a pas de zéros de début et le champ mois utilise deux chiffres.
Durée |
Type |
Valeur littérale d’intervalle |
Valeur de format d’intervalle |
|---|---|---|---|
Positif 5 ans |
INTERVAL YEAR |
|
|
Positif 1 an et 8 mois |
INTERVAL YEAR TO MONTH |
|
|
Négatif 5 mois |
INTERVAL MONTH |
|
|
Positif 14 mois |
INTERVAL MONTH |
|
|
Négatif 44 ans et 11 mois |
INTERVAL YEAR TO MONTH |
|
|
Positif 11 jours, 10 heures et 9 minutes |
INTERVAL DAY TO MINUTE |
|
|
Positif 2 jours, 23 heures, 8 minutes, 23 secondes et 275 millisecondes |
INTERVAL DAY TO SECOND |
|
|
Positif 4 secondes et 300 millisecondes |
INTERVAL SECOND |
|
|
Opérations qui impliquent des valeurs de date et d’heure¶
Le tableau suivant montre le type de données du résultat pour les opérations de calcul valides qui impliquent des valeurs d’intervalle :
Premier opérande |
Opérateur |
Deuxième opérande |
Type de résultat |
|---|---|---|---|
Horodatage |
|
Horodatage |
Un type de données d’intervalle |
Date ou horodatage |
|
Intervalle |
DATE, DATETIME, TIMESTAMP_LTZ, TIMESTAMP_NTZ, ou TIMESTAMP_TZ |
Date ou horodatage |
|
Intervalle |
DATE, DATETIME, TIMESTAMP_LTZ, TIMESTAMP_NTZ, ou TIMESTAMP_TZ |
Intervalle |
|
Date ou horodatage |
DATE, DATETIME, TIMESTAMP_LTZ, TIMESTAMP_NTZ, ou TIMESTAMP_TZ |
Numérique |
|
Intervalle |
Un type de données d’intervalle |
Intervalle |
|
Numérique |
Un type de données d’intervalle |
Intervalle |
|
Numérique |
Un type de données d’intervalle |
Intervalle |
|
Intervalle |
Un type de données d’intervalle |
Intervalle |
|
Intervalle |
Un type de données d’intervalle |
Pour les opérations qui impliquent deux valeurs d’intervalle, les valeurs doivent toutes deux être des valeurs d’intervalle année-mois, ou elles doivent toutes deux être des valeurs d’intervalle jour-heure. Les opérations qui combinent des valeurs d’intervalle année-mois et des valeurs d’intervalle jour-heure ne sont pas prises en charge. Lorsque l’opération implique deux valeurs d’intervalle année-mois, le type de résultat est un type d’intervalle année-mois. Lorsque l’opération implique deux valeurs d’intervalle jour-heure, le type de résultat est un type d’intervalle jour-heure.
Fonctions acceptant des valeurs d’intervalle comme arguments¶
Les fonctions suivantes acceptent des valeurs d’intervalle comme arguments :
Exemples de types de données d’intervalle¶
Les exemples suivants montrent comment utiliser des types de données d’intervalle :
Insertion et interrogation de données d’intervalle année-mois
Insertion et interrogation de données d’intervalle jour-heure
Copie de données d’intervalle dans une table et interrogation de la table
Effectuer des calculs en utilisant des données d’intervalle¶
Les exemples suivants effectuent des calculs en utilisant des données d’intervalle.
Ajoutez une année et un mois à une date :
Soustrayez une année et un mois à une date :
Ajoutez une période de temps à un horodatage :
L’exemple suivant utilise la fonction SYSTEM$TYPEOF pour montrer qu’une valeur INTERVAL DAY TO SECOND est renvoyée lorsqu’une requête soustrait deux valeurs d’horodatage :
Pour afficher les résultats de la requête au format d’intervalle, vous pouvez convertir l’expression en type de données INTERVAL DAY(2) TO SECOND(2) pour spécifier la précision, puis convertir ce type de données en valeur VARCHAR :
Insertion et interrogation de données d’intervalle année-mois¶
Créez une table permettant de suivre les candidatures aux postes vacants au moyen d’une colonne INTERVAL YEAR TO MONTH, puis insérez-y les données :
Lorsque vous interrogez la table sans convertir la colonne ` duration_of_experience`` en un type de données, la sortie affiche les valeurs de la colonne sous forme de nombre total de mois dans chaque ligne :
Lorsque vous interrogez la table et que vous convertissez la colonne duration_of_experience en type de données VARCHAR, la sortie affiche les valeurs de la colonne au format d’intervalle :
Insertion et interrogation de données d’intervalle jour-heure¶
Créez une table qui spécifie la durée d’expiration pour différentes fonctionnalités logicielles au moyen d’une colonne INTERVAL HOUR TO SECOND, puis insérez-y les données :
Interrogez la table et convertissez la colonne timeout_duration en type de données VARCHAR :
Copie de données d’intervalle dans une table et interrogation de la table¶
Procédez comme suit pour mettre en zone de préparation un fichier avec des données d’intervalle, puis copiez le fichier dans une table :
Dans un fichier de votre système de fichiers, copiez le contenu suivant :
Cet exemple suppose que le fichier est nommé
interval_values.csvdans le répertoire/examples/intervals/.Créez une zone de préparation :
Dans l’emplacement de mise en zone de préparation interne, mettez le fichier en zone de préparation :
Créez une table pour les données :
Pour charger le fichier en zone de préparation dans la table que vous avez créée, utilisez la commande COPY INTO <table> :
Pour afficher les données chargées, interrogez la table, puis convertissez les données en type VARCHAR pour afficher les données chargées :
Limitations relatives aux types de données d’intervalle¶
Les limitations suivantes s’appliquent aux types de données d’intervalle :
Les valeurs d’intervalle année-mois ne peuvent pas être combinées ou comparées avec des valeurs d’intervalle jour-heure.
Les constantes d’intervalle et les valeurs des types de données d’intervalle ne peuvent pas être combinées ou comparées.
Les constantes d’intervalle ne peuvent pas être insérées dans une colonne qui dispose d’un type de données d’intervalle.
Les valeurs VARIANT ne peuvent pas contenir de valeurs d’intervalle.
Les valeurs de types de données structurées ne peuvent pas contenir de valeurs d’intervalle.
Les expressions d’intervalle ne peuvent pas être utilisées dans des fonctions définies par l’utilisateur (UDFs) ou dans l’:doc:` Exécution de scripts Snowflake </developer-guide/snowflake-scripting/index>`.
Les types de tables suivants ne peuvent pas avoir de colonnes d’intervalle :
Les requêtes sur les colonnes d’intervalle ne peuvent pas bénéficier du Service d’optimisation de la recherche.
TIME¶
Snowflake prend en charge un seul type de données TIME pour stocker les heures sous la forme de HH:MI:SS.
TIME prend en charge un paramètre de précision optionnel pour les fractions de seconde (par exemple TIME(3)). La précision temporelle peut varier de 0 (secondes) à 9 (nanosecondes). La précision par défaut est 9.
Toutes les valeurs de TIME doivent être comprises entre 00:00:00 et 23:59:59.999999999. TIME stocke en interne l’heure « wallclock », et toutes les opérations sur les valeurs TIME sont effectuées sans tenir compte d’aucun fuseau horaire.
TIMESTAMP_LTZ , TIMESTAMP_NTZ , TIMESTAMP_TZ¶
Snowflake prend en charge trois variantes d’horodatage :
- TIMESTAMP_LTZ:
TIMESTAMP_LTZ stocke en interne les valeurs UTC avec une précision spécifiée. Cependant, toutes les opérations sont effectuées dans le fuseau horaire de la session en cours, contrôlé par le paramètre de session TIMEZONE.
Synonyme de TIMESTAMP_LTZ :
TIMESTAMPLTZ
TIMESTAMP WITH LOCAL TIME ZONE
- TIMESTAMP_NTZ:
TIMESTAMP_NTZ stocke en interne le temps « wallclock » avec une précision spécifiée. Toutes les opérations sont effectuées sans tenir compte d’aucun fuseau horaire.
Si le format de sortie contient un fuseau horaire, l’indicateur UTC (
Z) est affiché.TIMESTAMP_NTZ est la valeur par défaut pour TIMESTAMP.
Synonyme de TIMESTAMP_NTZ :
TIMESTAMPNTZ
TIMESTAMP WITHOUT TIME ZONE
DATETIME
- TIMESTAMP_TZ:
TIMESTAMP_TZ stocke en interne les valeurs UTC ainsi qu’un décalage de fuseau horaire associé. Lorsqu’un fuseau horaire n’est pas fourni, le décalage de fuseau horaire de session est utilisé. Toutes les opérations sont effectuées avec le décalage de fuseau horaire spécifique à chaque enregistrement.
Synonyme de TIMESTAMP_TZ :
TIMESTAMPTZ
TIMESTAMP WITH TIME ZONE
Les valeurs TIMESTAMP_TZ sont comparées en fonction de leur heure en UTC. Par exemple, la comparaison suivante entre différentes heures dans des fuseaux horaires différents renvoie TRUE, car les deux valeurs ont des heures équivalentes en UTC.
Attention
TIMESTAMP_TZ ne stocke actuellement que le décalage d’un fuseau horaire donné au moment de la création d’une valeur donnée, et non le fuseau horaire réel. Cela est particulièrement important lorsqu’il s’agit de la période de l’heure d’été, qui n’est pas utilisée par UTC.
Par exemple, avec le paramètre TIMEZONE réglé sur "America/Los_Angeles", la conversion d’une valeur en TIMESTAMP_TZ en janvier d’une année donnée stocke un décalage horaire de -0800. Si plus tard, six mois sont ajoutés à la valeur, le décalage -0800 est conservé, même si en juillet le décalage pour Los Angeles est de -0700. En effet, une fois la valeur créée, l’information de fuseau horaire actuel ("America/Los_Angeles") n’est plus disponible. L’exemple de code suivant illustre ce comportement :
TIMESTAMP¶
TIMESTAMP dans Snowflake est un alias spécifié par l’utilisateur associé à l’une des variations TIMESTAMP_*. Dans toutes les opérations où TIMESTAMP est utilisé, la variation TIMESTAMP_* spécifiée est automatiquement utilisée. Le type de données TIMESTAMP n’est jamais stocké dans les tables.
La variation TIMESTAMP_* associée à TIMESTAMP est spécifiée par le paramètre de session TIMESTAMP_TYPE_MAPPING. La valeur par défaut est TIMESTAMP_NTZ.
Toutes les variations d’horodatage, y compris l’alias TIMESTAMP, prennent en charge un paramètre de précision optionnel pour les secondes fractionnaires (par exemple TIMESTAMP(3)). La précision de l’horodatage peut varier de 0 (secondes) à 9 (nanosecondes). La précision par défaut est 9.
Exemples d’horodatage¶
Ces exemples créent une table en utilisant différents horodatages.
Tout d’abord, créez une table avec une colonne TIMESTAMP (mappée sur TIMESTAMP_NTZ) :
Ensuite, utilisez explicitement l’une des variations TIMESTAMP (TIMESTAMP_LTZ) :
Utiliser TIMESTAMP_LTZ avec des fuseaux horaires différents :
Cette requête montre que l’heure du 2 janvier est 08h00 à Los Angeles (qui est 16h00 à UTC) :
Ensuite, notez que les horaires changent avec un fuseau horaire différent :
Créez une table et utilisez TIMESTAMP_NTZ :
Notez que les deux heures de fuseaux horaires différents sont converties à la même heure « d’horloge murale » :
Ensuite, notez que la modification du fuseau horaire de la session n’affecte pas les résultats :
Créez une table et utilisez TIMESTAMP_TZ :
Notez que l’enregistrement du 1er janvier a hérité du fuseau horaire de la session et que America/Los_Angeles a été converti en décalage de fuseau horaire numérique :
Ensuite, notez que la modification du fuseau horaire de la session n’affecte pas les résultats :
Calendrier pris en charge¶
Snowflake utilise le calendrier grégorien pour toutes les dates et tous les horodatages. Le calendrier grégorien commence à l’année 1582, mais reconnaît les années précédentes. Il est important de noter que Snowflake n’ajuste pas les dates antérieures à 1582 (ou les calculs impliquant des dates antérieures à 1582) pour correspondre au calendrier julien. L’élément de format UUUU prend en charge les années négatives.
Formats de date et d’heure¶
Tous ces types de données acceptent la plupart des formats de date, d’heure ou de date + heure non ambigus. Voir Formats pris en charge pour la détection AUTO pour les formats que Snowflake reconnaît lorsque est configuré pour détecter le format automatiquement.
Vous pouvez également spécifier le format de la date et de l’heure manuellement. Lorsque vous spécifiez le format, vous pouvez utiliser les éléments non sensibles à la casse énumérés dans le tableau suivant :
Élément de format |
Description |
|---|---|
|
Année à quatre chiffres :sup : |
|
Année à deux chiffres [1], contrôlée par le paramètre de session TWO_DIGIT_CENTURY_START. Par exemple, lorsqu’il est défini sur |
|
Année à un chiffre ou à deux chiffres [2] sans zéros de début, contrôlée par le paramètre de session TWO_DIGIT_CENTURY_START. Par exemple, lorsque le paramètre est défini sur |
|
Mois à deux chiffres [1] ( |
|
Mois à un chiffre ou à deux chiffres [2] sans zéros de début ( |
|
Nom abrégé du mois [3]. |
|
Nom complet du mois [3]. |
|
Jour du mois à deux chiffres [1] ( |
|
Jour du mois à un chiffre ou à deux chiffres [2] sans zéros de début (de |
|
Jour de la semaine abrégé. |
|
Deux chiffres [1] pour l’heure ( |
|
Deux chiffres [1] pour l’heure ( |
|
Un ou deux chiffres :sup : |
|
Un ou deux chiffres :sup : |
|
Ante meridiem (matin) ( |
|
Ante meridiem (matin) ( |
|
Synonyme de |
|
Synonyme de |
|
Deux chiffres [1] pour la minute ( |
|
Un ou deux chiffres :sup : |
|
Deux chiffres [1] pour la seconde ( |
|
Un ou deux chiffres :sup : |
|
Fractions de secondes d’une précision de |
|
Heure et minute de fuseau horaire à deux chiffres [1], décalage par rapport à UTC. Peut être préfixé par un signe |
|
Année à quatre chiffres au format ISO, qui sont négatifs pour les années BCE. |
[1] Le nombre de chiffres décrit la sortie produite lors de la sérialisation des valeurs en texte. Lors de l’analyse du texte, Snowflake accepte jusqu’au nombre de chiffres spécifié. Par exemple, le numéro d’un jour peut être composé de un ou deux chiffres.
[2] Le nombre de chiffres décrit la sortie produite lors de la sérialisation des valeurs en texte. L’analyse n’est pas prise en charge. Si une analyse est nécessaire, utilisez un format équivalent incluant des zéros de début. Ces éléments de format seront activés dans le bundle BCR 2026_03.
[3] Pour l’élément de format MON, la sortie produite lors de la sérialisation des valeurs en texte est le nom abrégé du mois. Pour l’élément de format MMMM, la sortie produite lors de la sérialisation des valeurs en texte est le nom complet du mois. Lors de l’analyse de texte, Snowflake accepte l’abréviation à trois chiffres ou le nom de mois complet pour MON et MMMM. Par exemple, « January » ou « Jan », « February » ou « Feb », etc. sont acceptés lors de l’analyse de texte.
Note
Lorsqu’un format de date comprenant uniquement une date est utilisé, l’heure associée est supposée être minuit ce jour-là.
Tout ce qui se trouve dans le format entre guillemets doubles ou autre que les éléments ci-dessus est analysé/formaté sans être interprété. Snowflake recommande de toujours entourer les caractères littéraux entre guillemets doubles (par exemple,
"T","EST","Z") pour s’assurer qu’ils sont traités comme des littéraux.Pour plus de détails sur les plages valides, le nombre de chiffres et les meilleures pratiques, voir Informations supplémentaires sur l’utilisation des formats de date, d’heure et d’horodatage.
Exemples d’utilisation des formats de date et d’heure¶
L’exemple suivant utilise FF pour indiquer que la sortie a 9 chiffres dans le champ des secondes fractionnaires :
Constantes de date et d’heure¶
Les constantes (aussi connues sous le nom de littéraux) sont des valeurs de données fixes. Snowflake prend en charge la spécification de valeurs fixes de date, d’heure ou d’horodatage à l’aide de valeurs d’horodatage. Les constantes de chaînes doivent toujours être délimitées par des caractères de délimitation. Snowflake accepte l’utilisation de guillemets simples pour délimiter les constantes de chaîne de caractères.
Par exemple :
La chaîne est analysée en tant que valeur DATE, TIME ou TIMESTAMP en fonction du format d’entrée du type de données, défini via les paramètres suivants :
- DATE:
- TIME:
- TIMESTAMP:
Par exemple, insérez une date spécifique dans une colonne à l’intérieur d’une table :
Constantes d’intervalle¶
Vous pouvez utiliser des constantes d’intervalle pour ajouter ou soustraire la période d’une date, d’une heure ou d’un horodatage. Les constantes d’intervalle sont implémentées en utilisant le mot-clé INTERVAL, qui a la syntaxe suivante :
Comme pour toutes les constantes de chaîne, Snowflake requiert des guillemets simples pour délimiter les constantes d’intervalle.
Note
Les constantes d’intervalle prennent en charge le calcul de la date et de l’heure, mais elles ne prennent pas en charge le stockage d’intervalle en tant que type de colonne. Pour stocker les valeurs d’intervalle dans une colonne, vous pouvez utiliser les types de données d’intervalle.
Le mot-clé INTERVAL prend en charge un ou plusieurs nombres entiers et, éventuellement, une ou plusieurs parties de la date ou de l’heure. Par exemple :
INTERVAL '1 year'représente une année.INTERVAL '4 years, 5 months, 3 hours'représente quatre ans, cinq mois et trois heures.
Si aucune partie de date ou d’heure n’est spécifiée, l’intervalle représente les secondes (par exemple INTERVAL '2' équivaut à INTERVAL '2 seconds'). Notez que cela diffère de l’unité de temps par défaut pour l’exécution de l’arithmétique des dates. Pour plus de détails, voir Arithmétique simple pour les dates.
Pour consulter la liste des parties de date et d’heure prises en charge, voir Date et heure prises en charge pour les intervalles.
Note
L’ordre des incréments d’intervalle est important. Les incréments sont ajoutés ou soustraits dans l’ordre indiqué. Par exemple :
INTERVAL '1 year, 1 day'ajoute ou soustrait d’abord une année, puis un jour.INTERVAL '1 day, 1 year'ajoute ou soustrait d’abord un jour, puis une année.
Les différentes de tri peuvent affecter les calculs influencés par des événements du calendrier tels que les années bissextiles :
INTERVAL n’est pas un type de données (à savoir que vous ne pouvez pas définir une colonne de table comme étant du type de données INTERVAL). Les intervalles ne peuvent être utilisés que dans l’arithmétique de la date, de l’heure et de l’horodatage.
Vous ne pouvez pas utiliser un intervalle avec une variable SQL. Par exemple, la requête suivante renvoie une erreur :
Parties de date et d’heure prises en charge pour les intervalles¶
Le mot clé INTERVAL prend en charge les parties de date et heure suivantes comme arguments (non sensibles à la casse) :
Partie de date ou d’heure |
Abréviations/variations |
|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Exemples d’intervalle¶
Ajouter un intervalle d’une année à une date précise :
Ajouter un intervalle de 3 heures et 18 minutes à une heure spécifique :
Ajouter un intervalle complexe à la sortie de la fonction CURRENT_TIMESTAMP :
Voici un exemple de sortie. La sortie est différente lorsque l’horodatage actuel est différent.
Ajouter un intervalle complexe avec notation abrégée de la date et de l’heure à une date spécifique :
Interroger une table d’informations relatives aux employés et renvoyer les noms des employés qui ont été embauchés au cours des deux dernières années et des trois derniers mois :
Filtrer une colonne TIMESTAMP nommée ts d’une table nommée t1 et ajouter quatre secondes à chaque valeur renvoyée :
Arithmétique simple pour les dates¶
En plus d’utiliser des constantes d’intervalle pour ajouter et soustraire des dates, des heures et des horodatages, vous pouvez également ajouter et soustraire des jours aux valeurs DATE, sous la forme { + | - } integer, où integer spécifie le nombre de jours à ajouter ou soustraire.
Note
Les valeurs TIME et TIMESTAMP ne prennent pas encore en charge l’arithmétique simple.
Exemples arithmétiques de date¶
Ajouter un jour à une date spécifique :
Soustraire quatre jours à une date précise :
Interroger une table nommée employees et renvoyer les noms des personnes qui ont quitté l’entreprise mais qui ont été employées pendant plus de 365 jours :
SELECT name FROM employees WHERE end_date > start_date + 365;