MS SQL сравнить даты?
У меня есть 2 даты (даты):
date1 = 2010-12-31 15: 13: 48.593
date2 = 2010-12-31 00: 00: 00.000
Это один и тот же день, только в разное время. Сравнение date1 и date2 с помощью
спасибо :)
5 ответов:
использовать
DATEDIFF
функция с datepartday
.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