私は2つの日付(日時)を持っています:
date1 = 2010-12-31 15:13:48.593
date2 = 2010-12-31 00:00:00.000
その同じ日、ちょうど異なる時間。<=を使用してdate1とdate2を比較することは、date1の時間のために機能しません。したがって、date1 <= date2は間違っていますが、正しいはずです。年、月、日だけを見て同じになるように比較できますか?そのSQLServer2008。
ありがとう:)
私は2つの日付(日時)を持っています:
date1 = 2010-12-31 15:13:48.593
date2 = 2010-12-31 00:00:00.000
その同じ日、ちょうど異なる時間。<=を使用してdate1とdate2を比較することは、date1の時間のために機能しません。したがって、date1 <= date2は間違っていますが、正しいはずです。年、月、日だけを見て同じになるように比較できますか?そのSQLServer2008。
ありがとう:)
回答:
SELECT CASE WHEN CAST(date1 AS DATE) <= CAST(date2 AS DATE) ...
あなたが必要なことをする必要があります。
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
戻り値
COMPARISON_WITH_CAST | COMPARISON_WITHOUT_CAST
Y N
DATE
タイプは、SQL Server 2008の前には利用できませんでした
のDATEDIFF
日付部分で関数を使用しますday
。
SELECT ...
FROM ...
WHERE DATEDIFF(day, date1, date2) >= 0
注あなたがいることをテストする場合は、そのdate1
<= date2
、あなたはそれをテストする必要があるDATEDIFF(day, date1, date2) >= 0
か、あるいはあなたがテストすることができDATEDIFF(day, date2, date1) <= 0
。
date1
date2
date1
date2
これを試して:
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
私は常にDateDiff(day、date1、date2)を使用して2つの日付を比較します。
次の例をチェックアウトします。それをコピーして、Mssqlサーバーで実行するだけです。また、12月31日から12月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