MS SQL сравнить даты?


У меня есть 2 даты (даты):

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

Это один и тот же день, только в разное время. Сравнение date1 и date2 с помощью

спасибо :)

5 75

5 ответов:

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

должны делать то, что вам нужно.

использовать DATEDIFF функция с datepart day.

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

обратите внимание, что если вы хотите проверить, что date1 date2 тогда вам нужно проверить это DATEDIFF(day, date1, date2) >= 0, или в качестве альтернативы вы можете проверить DATEDIFF(day, date2, date1) <= 0.

простое однострочное решение

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

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

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

вы можете попробовать различные варианты с этим, кроме "dd"

Я всегда использую DateDiff (day,date1,date2) для сравнения двух дат.

оформить заказ приведенном ниже примере. Просто скопируйте это и запустите в Ms sql server. Также, попробуйте изменить дату на 31 декабря на 30 декабря и проверить результат

BEGIN

declare @firstDate datetime
declare @secondDate datetime


declare @chkDay int

set @firstDate ='2010-12-31 15:13:48.593'
set @secondDate ='2010-12-31 00:00:00.000'

set @chkDay=Datediff(day,@firstDate ,@secondDate )

if @chkDay=0
    Begin
        Print 'Date is Same'
    end
else
    Begin
        Print 'Date is not Same'
    end
End

Попробуйте Это:

BEGIN

declare @Date1 datetime
declare @Date2 datetime

declare @chkYear int
declare @chkMonth int
declare @chkDay int
declare @chkHour int
declare @chkMinute int
declare @chkSecond int
declare @chkMiliSecond int

set @Date1='2010-12-31 15:13:48.593'
set @Date2='2010-12-31 00:00:00.000'

set @chkYear=datediff(yyyy,@Date1,@Date2)
set @chkMonth=datediff(mm,@Date1,@Date2)
set @chkDay=datediff(dd,@Date1,@Date2)
set @chkHour=datediff(hh,@Date1,@Date2)
set @chkMinute=datediff(mi,@Date1,@Date2)
set @chkSecond=datediff(ss,@Date1,@Date2)
set @chkMiliSecond=datediff(ms,@Date1,@Date2)

if @chkYear=0 AND @chkMonth=0 AND @chkDay=0 AND @chkHour=0 AND @chkMinute=0 AND @chkSecond=0 AND @chkMiliSecond=0
    Begin
        Print 'Both Date is Same'
    end
else
    Begin
        Print 'Both Date is not Same'
    end
End