MS SQL comparar datas?
Tenho 2 datas (datas):
data1 = 2010-12-31 15:13:48.593
data2 = 2010-12-31 00:00:00.000
75
Author: Martin Smith, 2011-01-25
5 answers
SELECT CASE WHEN CAST(date1 AS DATE) <= CAST(date2 AS DATE) ...
Deve fazer o que precisa.
Estojo De Ensaio
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_CAST
FROM dates
O Devolve
COMPARISON_WITH_CAST | COMPARISON_WITHOUT_CAST
Y N
77
Author: Martin Smith, 2015-07-09 14:20:42
DATEDIFF
função com um datepart de day
.
SELECT ...
FROM ...
WHERE DATEDIFF(day, date1, date2) >= 0
Note que se quiser testar isso date1
date2 então você precisa testar isso DATEDIFF(day, date1, date2) >= 0
, ou alternativamente você pode testar DATEDIFF(day, date2, date1) <= 0
.
61
Author: LukeH, 2011-01-25 13:49:13
A solução simples de uma linha é
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
Pode tentar várias opções com isto, excepto " dd "
3
Author: Sarathi B, 2014-10-31 21:32:01
Sou sempre usado DateDiff (day,date1, date2) para comparar duas datas.
Check-out a seguir ao exemplo. Copia isso e corre no servidor de Ms sql. Além disso, tente alterar a data até 31 de dezembro para 30 de dezembro e verifique o resultado
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
0
Author: Jignesh Darji, 2017-04-05 07:06:34
Tenta Isto:
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
-1
Author: Kumar Akhil, 2016-02-19 18:39:16