MS SQL compare dates? MS SQL compare dates? sql-server sql-server

MS SQL compare dates?


SELECT CASE WHEN CAST(date1 AS DATE) <= CAST(date2 AS DATE) ...

Should do what you need.

Test Case

WITH dates(date1, date2, date3, date4)     AS (SELECT CAST('20101231 15:13:48.593' AS DATETIME),                CAST('20101231 00:00:00.000' AS DATETIME),                CAST('20101231 15:13:48.593' AS DATETIME),                CAST('20101231 00:00:00.000' AS DATETIME))SELECT CASE         WHEN CAST(date1 AS DATE) <= CAST(date2 AS DATE) THEN 'Y'         ELSE 'N'       END AS COMPARISON_WITH_CAST,       CASE         WHEN date3 <= date4 THEN 'Y'         ELSE 'N'       END AS COMPARISON_WITHOUT_CASTFROM   dates 

Returns

COMPARISON_WITH_CAST   |  COMPARISON_WITHOUT_CASTY                         N


Use the DATEDIFF function with a datepart of day.

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

Note that if you want to test that date1 <= date2 then you need to test that DATEDIFF(day, date1, date2) >= 0, or alternatively you could test DATEDIFF(day, date2, date1) <= 0.


The simple one line solution is

datediff(dd,'2010-12-31 15:13:48.593','2010-12-31 00:00:00.000')=0datediff(dd,'2010-12-31 15:13:48.593','2010-12-31 00:00:00.000')<=1datediff(dd,'2010-12-31 15:13:48.593','2010-12-31 00:00:00.000')>=1

You can try various option with this other than "dd"