78 votes

MS SQL comparer les dates ?

J'ai 2 dates (dates):

date1 = 2010-12-31 15: 13: 48.593
date2 = 2010-12-31 00: 00: 00.000

C'est le même jour, mais à des moments différents. La comparaison de date1 et date2 avec <= ne fonctionne pas à cause de l'heure date1. Donc date1 <= date2 est faux, mais devrait être vrai. Puis-je les comparer en regardant simplement l'année, le mois et le jour pour qu'ils soient identiques? Son SQL Server 2008.

Merci :)

80voto

Martin Smith Points 174101
 SELECT CASE WHEN CAST(date1 AS DATE) <= CAST(date2 AS DATE) ...
 

Devrait faire ce dont vous avez besoin.

Cas de test

 WITH dates(date1, date2) AS
(
SELECT CAST('2010-12-31 15:13:48.593' AS DATETIME),
       CAST('2010-12-31 00:00:00.000' AS DATETIME)
)
SELECT CASE WHEN CAST(date1 AS DATE) <= CAST(date2 AS DATE) THEN 'Y' ELSE 'N' END
FROM dates
 

Résultats

 ----
Y
 

63voto

LukeH Points 110965

Utilisez la fonction DATEDIFF avec une datepart de day .

 SELECT ...
FROM ...
WHERE DATEDIFF(day, date1, date2) >= 0
 

Notez que si vous voulez tester que date1 <= date2 alors vous devez tester que DATEDIFF(day, date1, date2) >= 0 , sinon vous pouvez aussi tester DATEDIFF(day, date2, date1) <= 0 .

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X