J'ai besoin d'un moyen de déterminer le nombre de jours entre deux dates en SQL.Nombre de jours entre deux dates - ANSI SQL
La réponse doit être en ANSI SQL.
J'ai besoin d'un moyen de déterminer le nombre de jours entre deux dates en SQL.Nombre de jours entre deux dates - ANSI SQL
La réponse doit être en ANSI SQL.
ANSI SQL-92 définit DATE - DATE comme retour d'un type INTERVALLE. Vous êtes supposé être capable d'extraire des scalaires à partir d'INTERVALLES en utilisant la même méthode qu'en les extrayant à partir de DATE en utilisant – assez correctement – la fonction EXTRACT (4.5.3).
< expression d'extrait > fonctionne sur une date-heure ou intervalle et retourne une valeur numérique exacte représentant la valeur d'une composante de la date-heure ou intervalle .
Cependant, ceci est très mal implémenté dans la plupart des bases de données. Vous êtes probablement coincé en utilisant quelque chose de spécifique à la base de données. DATEDIFF est plutôt bien implémenté sur différentes plates-formes.
Voici la "vraie" manière de le faire.
SELECT EXTRACT(DAY FROM DATE('2009-01-01') - DATE('2009-05-05')) FROM DUAL;
Bonne chance!
Je crois que la norme SQL-92 prend en charge la soustraction de deux dates avec l'opérateur '-'.
Je ne me souviens pas d'utiliser un SGBDR qui ne prenait pas en charge DATE1-DATE2 et SQL 92 semble être d'accord.
SQL 92 prend en charge la syntaxe suivante:
t.date_1 - t.date_2
La fonction EXTRACT est également ANSI, mais il est pas pris en charge sur SQL Server. Exemple:
ABS(EXTRACT(DAY FROM t.date_1) - EXTRACT(DAY FROM t.date_2)
Emballage calcul dans une fonction de valeur absolue garantit la valeur sortira comme positive, même si une date plus petite est la première date.
EXTRACT est pris en charge sur:
Si vous extrayez du DATE avant la soustraction, le calcul ne fonctionne que si les deux dates sont dans le même mois. –
Outre EXTRACT, le serveur MS SQL ne prend pas non plus en charge la soustraction d'opérateur entre deux dates. "La date du type de données d'opérande n'est pas valide pour l'opérateur de soustraction." – chugadie