DATE_ADD |
Ajoute à la date |
|---|---|
| BigQuery | |
Syntaxe
| DATE_ADD(date_expression, INTERVAL INT64_expr date_part) |
Paramètres
| Nom | Description |
|---|---|
| date_expression | Ce paramètre permet de spécifier l'expression de type DATE à laquelle la quantité de temps doit être ajoutée. |
| INT64_expr | Ce paramètre permet de spécifier la quantité entière à ajouter à la date_expression. Cette valeur doit être un entier (INT64). |
| date_part | Ce paramètre permet de spécifier l'unité de temps (par exemple, DAY, WEEK, MONTH, YEAR) à laquelle la quantité (INT64_expr) doit être ajoutée. Les parties de temps valides incluent DAY, WEEK, MONTH, QUARTER, YEAR. |
Description
Cette fonction permet d'ajouter une quantité de temps à une date existante.
Remarques
- Ajoute une flexibilité temporelle essentielle pour la planification : DATE_ADD permet de décaler dynamiquement une date dans le futur, ce qui est extrêmement utile pour calculer des échéances, des dates de fin de contrat, des délais de traitement, ou des dates prévisionnelles.
- S'utilise exclusivement avec le type DATE (sans heure) : Contrairement aux fonctions comme DATETIME_ADD ou TIMESTAMP_ADD, DATE_ADD ne gère que la composante date. Elle ignore les heures, minutes et secondes, ce qui simplifie le traitement dans les contextes où l'heure est non pertinente.
- L'unité de temps est bien contrôlée grâce au paramètre date_part : Le paramètre date_part permet de définir précisément l'échelle d'ajout : jour, semaine, mois, trimestre ou année. Cela permet de facilement exprimer des calculs comme "dans 6 mois" ou "dans 3 semaines".
- La valeur à ajouter doit être entière, pas fractionnaire : Le paramètre INT64_expr ne peut pas être une valeur décimale. Cela signifie qu'on ne peut pas ajouter 1,5 jour ou 2,75 semaines, ce qui limite l'usage à des unités entières de temps.
- Facilement combinable avec CURRENT_DATE() pour générer des dates futures : En combinant DATE_ADD avec la date du jour (CURRENT_DATE()), on peut construire des expressions comme DATE_ADD(CURRENT_DATE(), INTERVAL 30 DAY), utiles pour des projections à 30 jours.
- La fonction conserve la logique calendaire des mois et années : Lorsqu'on ajoute des mois ou des années, BigQuery ajuste correctement la date résultante. Par exemple, DATE_ADD(DATE(2024,1,31), INTERVAL 1 MONTH) retournera 2024-02-29 en tenant compte des années bissextiles.
- Les résultats sont prédictibles et non affectés par les fuseaux horaires : Étant donné que DATE_ADD travaille avec le type DATE, elle n'est pas influencée par les fuseaux horaires. Cela garantit une constance dans les calculs, quel que soit l'environnement d'exécution ou la région géographique.
- Très utile dans les requêtes analytiques, notamment pour filtrer ou regrouper : On peut s'en servir pour créer des plages dynamiques de dates dans des clauses WHERE, comme dans :
- WHERE event_date BETWEEN CURRENT_DATE() AND DATE_ADD(CURRENT_DATE(), INTERVAL 7 DAY)
Ce genre de construction permet d'automatiser les requêtes sans modifier manuellement les dates.
Exemples
La requête suivante génère la date du jour dans le fuseau horaire par défaut :
- SELECT CURRENT_DATE() AS the_date;
on obtiendra un résultat ressemblant à ceci :
/*--------------*| the_date |
+--------------+
| 2016-12-25 |
*--------------*/
Les requêtes suivantes produisent la date actuelle dans un fuseau horaire spécifié :
- SELECT CURRENT_DATE('America/Los_Angeles') AS the_date;
on obtiendra un résultat ressemblant à ceci :
/*--------------*| the_date |
+--------------+
| 2016-12-25 |
*--------------*/
Avec une date fragmenté :
- SELECT CURRENT_DATE('-08') AS the_date;
on obtiendra un résultat ressemblant à ceci :
/*--------------*| the_date |
+--------------+
| 2016-12-25 |
*--------------*/
La requête suivante génère la date du jour dans le fuseau horaire par défaut. Les parenthèses ne sont pas nécessaires si la fonction n'a pas de paramètre :
- SELECT CURRENT_DATE AS the_date;
on obtiendra un résultat ressemblant à ceci :
/*--------------*| the_date |
+--------------+
| 2016-12-25 |
*--------------*/
Dernière mise à jour : Jeudi, le 18 Juin 2020