TIMESTAMPDIFF (fonction scalaire)
Renvoie un nombre estimé d'intervalles du type défini par le premier argument, en fonction de la différence entre deux horodatages.
Le schéma est SYSIBM. La version SYSFUN de la fonction TIMESTAMPDIFF reste disponible.
- expression-numérique
- Expression qui renvoie une valeur de type de données INTEGER ou SMALLINT intégré. Les valeurs valides représentent un intervalle tel que défini dans le tableau suivant.
Tableau 1. Valeurs d'intervalle valides Valeur Intervalle 1 Microsecondes 2 secondes 4 Compte-rendu de réunion 8 Heures 16 jours 32 Semaines 64 Mois 128 Trimestres 256 Années string-expression - Expression qui renvoie une valeur de type de données CHAR ou VARCHAR intégré. La valeur doit être le résultat de la soustraction de deux horodatages et de la conversion du résultat en CHAR. Si la valeur n'est pas un type de données CHAR ou VARCHAR, elle est implicitement transtypée en VARCHAR avant d'évaluer la fonction. Dans une base de données Unicode, si un argument fourni est une chaîne graphique, il est d'abord converti en chaîne de caractères avant l'exécution de la fonction
Si un signe positif ou négatif est présent, il s'agit du premier caractère de la chaîne. Le tableau suivant décrit les éléments de la durée de la chaîne de caractères.
Le résultat de la fonction est INTEGER avec le même signe que le deuxième argument. Le résultat peut être null ; si l'argument est null, le résultat est la valeur null.
La valeur renvoyée est déterminée pour chaque intervalle, comme indiqué dans le tableau suivant:
| Intervalle de résultat | Calcul à l'aide d'éléments de durée |
|---|---|
| Années | Années |
| Trimestres | valeur entière de (mois + (years*12)) /3 |
| Mois | mois + (years*12) |
| Semaines | valeur entière de ((jours + (months*30)) /7) + (years*52) |
| jours | days + (months*30) + (years*365) |
| Heures | heures + ((jours + (months*30) + (years*365)) * 24) |
| Minutes (la valeur absolue de la durée ne doit pas dépasser 40850913020759.999999) | minutes + (heures + ((jours + (months*30) + (years*365)) * 24)) * 60 |
| Secondes (la valeur absolue de la durée doit être inférieure à 680105031408.000000) | secondes + (minutes + (heures + (jours + (months*30) + (years*365)) * 24)) * 60) * 60 |
| Microsecondes (la valeur absolue de la durée doit être inférieure à 3547.483648) | microsecondes + (secondes + (minutes*60)) * 1000000 |
- Il y a 365 jours dans une année.
- Il y a 30 jours dans un mois.
- Il y a 24 heures par jour.
- Il y a 60 minutes dans une heure.
- Il y a 60 secondes dans une minute.
Ces hypothèses sont utilisées lors de la conversion des informations du deuxième argument vers le type d'intervalle spécifié dans le premier argument. L'estimation renvoyée peut varier d'un certain nombre de jours. Par exemple, si le nombre de jours (intervalle 16) est demandé pour la différence entre'1997-03-01-00.00.00'et'1997-02-01-00.00.00', le résultat est 30. En effet, la différence entre les horodatages est de 1 mois et l'hypothèse de 30 jours par mois s'applique.
Exemple
TIMESTAMPDIFF(4,CHAR(TIMESTAMP('2001-09-29-11.25.42.483219') -
TIMESTAMP('2001-09-26-12.07.58.065497')))