J'ai une table avec des colonnes
TypeExame, DateExame
Comment puis-je sélectionner tous les loggings avec (Now-DateExame)> = 365 jours?
select * from MyTable where datediff (day, DateExame, getdate()) >= 365
Voir DATEDIFF et GETDATE pour plus de détails.
Si vous avez un index sur DateExame
, mettre la condition comme ceci permettra son utilisation:
SELECT * FROM atable WHERE DateExame <= DATEADD(DAY, -365, CAST(GETDATE() AS date)) ;
Ce qui précède reference le type de données de date
, ce qui signifie que vous devez au less utiliser SQL Server 2008 pour l'exécuter. Pour le faire fonctionner dans les versions antérieures, vous pouvez réécrire la condition comme ceci:
WHERE DateExame <= DATEADD(DAY, DATEDIFF(DAY, 0, GETDATE()) - 365, 0)
Fondamentalement, la version modifiée utilise la méthode DATEADD / DATEDIFF pour tronquer une valeur datetime
avec un réglage mineur pour soustraire 365 jours en cours de route.
Cependant, si toutes vos valeurs DateExame
sont des dates sans la partie time, cette version plus simple devrait fonctionner aussi bien:
WHERE DateExame <= DATEADD(DAY, -365, GETDATE())
Autrement dit, la suppression de la partie time du résultat de GETDATE()
serait parfaitement inutile.
Essaye celui-là :
select * from MyTable where datediff (day, DateExame, getdate()) >= 365
En utilisant la fonction Datediff vous pouvez soustraire deux dates. vous pouvez passer le premier argument comme minute, jour, mois, année, etc.