J'ai 2 dates (dates):
date1 = 2010-12-31 15: 13: 48.59
date2 = 2010-12-31 00: 00: 00.0
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 :)
SELECT CASE WHEN CAST(date1 AS DATE) <= CAST(date2 AS DATE) ...
Devrait faire ce dont vous avez besoin.
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
Résultats
COMPARISON_WITH_CAST | COMPARISON_WITHOUT_CAST
Y N
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
, Vous devez alors tester cette DATEDIFF(day, date1, date2) >= 0
ou vous pouvez également tester DATEDIFF(day, date2, date1) <= 0
.
La solution simple en une ligne est
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
Vous pouvez essayer diverses options avec cet autre que "dd"
Je suis toujours utilisé DateDiff (jour, date1, date2) pour comparer deux dates.
Commander exemple suivant. Copiez simplement cela et lancez-le dans Ms SQL server. Essayez également avec la date de modification du 31 décembre au 30 décembre et vérifiez le résultat.
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