TIMESTAMP_SUB |
Soustraire à l'horodatage |
|---|---|
| BigQuery | |
Syntaxe
| TIMESTAMP_SUB(timestamp_expression, INTERVAL int64_expression date_part) |
Paramètres
| Nom | Description |
|---|---|
| timestamp_expression | Ce paramètre permet de spécifier l'expression de type TIMESTAMP à partir de laquelle vous souhaitez soustraire une durée. Il s'agit du point de départ pour le calcul. |
| INTERVAL int64_expression date_part | Ce paramètre permet de définir la durée à soustraire à la timestamp_expression. Il se compose de trois parties : INTERVAL : Mot clef obligatoire pour indiquer que vous spécifiez un intervalle. int64_expression : Ce paramètre permet de spécifier la valeur numérique entière représentant le nombre d'unités de temps à soustraire (par exemple, 5, 100, -2). date_part : Ce paramètre permet de spécifier l'unité de temps à soustraire (par exemple, MICROSECOND, MILLISECOND, SECOND, MINUTE, HOUR, DAY, WEEK, MONTH, QUARTER, YEAR). La fonction renvoie un nouveau TIMESTAMP après avoir soustrait l'intervalle spécifié. |
Description
Cette fonction permet de soustraire une quantité de temps à un type de données TIMESTAMP.
Remarques
- Fonction complémentaire de TIMESTAMP_ADD : TIMESTAMP_SUB est l'inverse logique de TIMESTAMP_ADD. Alors que l'une ajoute une durée, l'autre la retire à un horodatage donné. Cette dualité permet de manipuler les dates dans les deux sens du temps de manière intuitive.
- Syntaxe rigide avec le mot-clé INTERVAL : L'utilisation du mot clef INTERVAL est obligatoire pour indiquer une soustraction d'intervalle. Son omission entraîne une erreur. Ce formalisme garantit une meilleure lisibilité et évite les confusions avec d'autres opérations temporelles.
- Support de nombreuses unités de temps : La fonction accepte des unités temporelles très précises, comme MICROSECOND, jusqu'à des intervalles plus larges comme YEAR. Cela permet de répondre à divers besoins, qu'il s'agisse d'ajuster des secondes ou de reculer des décennies.
- Peut manipuler des valeurs dynamiques ou calculées : Le paramètre int64_expression peut provenir d'une colonne, d'un calcul, ou d'un paramètre de requête. Cela rend la fonction très flexible pour des scénarios tels que la génération de périodes dynamiques ou le filtrage conditionnel dans le passé.
- La valeur renvoyée est un nouvel objet TIMESTAMP : La fonction retourne une nouvelle valeur sans modifier l'entrée d'origine. Cela permet de manipuler des valeurs dans une requête sans affecter les données sources, pratique pour les calculs intermédiaires ou les colonnes dérivées.
- Utile pour filtrer les données dans le passé : TIMESTAMP_SUB est particulièrement utile dans les requêtes analytiques pour extraire des données situées avant un instant donné. Par exemple, on peut récupérer tous les événements survenus dans les 30 derniers jours avec WHERE event_time > TIMESTAMP_SUB(CURRENT_TIMESTAMP(), INTERVAL 30 DAY).
- Gestion subtile des cas avec MONTH ou YEAR : Lorsqu'on soustrait des mois ou des années, les résultats peuvent varier selon les longueurs variables des mois. Par exemple, reculer d'un mois depuis le 31 mars renverra le 29 février ou 28 février selon les années, ce qui nécessite une attention particulière.
- Compatible avec des fonctions analytiques ou des partitions temporelles : TIMESTAMP_SUB s'intègre parfaitement dans des expressions complexes, y compris dans des fonctions analytiques OVER(...), ou pour définir des bornes temporelles dans des fonctions de partition, facilitant l'analyse par fenêtres glissantes.
Dernière mise à jour : Jeudi, le 18 Juin 2020