sql server - एमएस एसक्यूएल तिथियों की तुलना करें?




sql-server tsql (4)

इसे इस्तेमाल करे:

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

मेरे पास 2 तिथियां हैं (डेटाटाइम्स):

दिनांक 1 = 2010-12-31 15: 13: 48.5 9 3
दिनांक 2 = 2010-12-31 00: 00: 00.000

यह वही दिन, बस अलग-अलग समय। दिनांक 1 और दिनांक 2 की तुलना <दिनांक 1 दिनांक के कारण काम नहीं करता है। तो date1 <= date2 गलत है, लेकिन सच होना चाहिए। क्या मैं उन्हें साल, महीने और दिन देखकर तुलना कर सकता हूं ताकि वे वही हों? इसका एसक्यूएल सर्वर 2008।

धन्यवाद :)


मैं हमेशा दो तारीख की तुलना करने के लिए DateDiff (दिन, दिनांक 1, दिनांक 2) का उपयोग करता हूं।

उदाहरण के बाद चेकआउट। बस इसे कॉपी करें और एमएस एसक्यूएल सर्वर में चलाएं। साथ ही, 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

day दिनांक के साथ DATEDIFF फ़ंक्शन का उपयोग करें।

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

ध्यान दें कि यदि आप उस date2 date1 <= date2 का परीक्षण करना चाहते हैं तो आपको उस DATEDIFF(day, date1, date2) >= 0 परीक्षण करना होगा, या वैकल्पिक रूप से आप DATEDIFF(day, date2, date1) <= 0 परीक्षण कर सकते हैं।


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