Sqlserver
 sql >> डेटाबेस >  >> RDS >> Sqlserver

दिनांक सीमा ओवरलैपिंग चेक बाधा

CHECK को बाद निष्पादित किया जा रहा है पंक्ति सम्मिलित कर दी गई है, इसलिए सीमा स्वयं के साथ ओवरलैप हो जाती है।

आपको कुछ ऐसा शामिल करने के लिए अपने WHERE में संशोधन करना होगा:@MyTableId <> MyTableId

BTW, आपकी WHERE अभिव्यक्ति को सरल बनाया जा सकता है।

रेंज नहीं ओवरलैप करें अगर:

  • एक श्रेणी का अंत दूसरे के शुरू होने से पहले होता है
  • या एक श्रेणी की शुरुआत दूसरे के अंत के बाद होती है।

जिसे SQL में लिखा जा सकता है जैसे:

WHERE @DateEnd < DateStart OR DateEnd < @DateStart

करने वाली . की श्रेणी प्राप्त करने के लिए इसे अस्वीकार करें ओवरलैप...

WHERE NOT (@DateEnd < DateStart OR DateEnd < @DateStart)

...जो डी मॉर्गन के नियमों के अनुसार समान है...

WHERE NOT (@DateEnd < DateStart) AND NOT (DateEnd < @DateStart)

...जो समान है:

WHERE @DateEnd >= DateStart AND DateEnd >= @DateStart

तो आपका अंतिम WHERE होना चाहिए:

WHERE
    @MyTableId <> MyTableId
    AND @DateEnd >= DateStart
    AND DateEnd >= @DateStart

[एसक्यूएल फिडल]

नोट:श्रेणियों को "स्पर्श" करने की अनुमति देने के लिए, <= . का उपयोग करें प्रारंभिक अभिव्यक्ति में, जो > . उत्पन्न करेगा अंतिम अभिव्यक्ति में।



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SQL सर्वर आंतरिक:योजना कैशिंग पीटी। II - पुन:संकलन योजनाएं

  2. मैं SQL सर्वर में दी गई तालिका को संदर्भित करने वाली सभी विदेशी कुंजियों को कैसे सूचीबद्ध कर सकता हूं?

  3. हम एसएसएमएस में एन्क्रिप्टेड संग्रहीत प्रक्रिया के शरीर को कैसे देख सकते हैं?

  4. SQL सर्वर (SSMS) में डेटाबेस के संगतता स्तर की जाँच करें/बदलें

  5. SQL सर्वर केस-संवेदनशीलता की जाँच करता है?