2012-10-11 17 views
12

मैं यह पता लगाने की कोशिश कर रहा हूं कि एसक्यूएल (टी-एसक्यूएल पसंदीदा) में कोई तरीका है या नहीं, यह निर्धारित करने के लिए कि दिनांक सीमा किसी अन्य दिनांक सीमा के बीच होती है या नहीं।निर्धारित करें कि दिनांक सीमा किसी अन्य दिनांक सीमा के बीच होती है - एसक्यूएल

मेरी उदाहरण के प्रयोजनों के लिए

: daterange1 2012/01/01 = मैं एक परिभाषित दिनांक सीमा, तिथि नहीं है - 2012/01/05 daterange2 = मैं के साथ काम करने के लिए दो अन्य तिथि होती है, की सुविधा देता है 1/3 कहते हैं/2012 और 1/4/2012

मैं इस इस

CASE 
    WHEN daterange1 = 0 then result1 
    WHEN daterange2 falls within daterange1 then result2 
    END as datestuff 

की तरह कुछ के लिए एक मामला बयान में उपयोग करने के लिए कोशिश कर रहा हूँ एसक्यूएल में संभव है? मैं वास्तव में इस पर फंस गया हूं, मुझे पता है कि एक तारीख के बीच एक ही तारीख गिरती है, लेकिन तारीख सीमा के साथ यह कैसे किया जा सकता है? जवाब को एक केस स्टेटमेंट में जरूरी नहीं है लेकिन इसे प्राथमिकता दी जाती है।

उत्तर

23

आप daterange1 = 0 कैसे प्राप्त कर सकते हैं, क्योंकि यह एक सीमा है, यानी 2 मान?

ओवरलैप हुई तिथियों के लिए उचित परीक्षण

CASE WHEN @range1start <= @range2end 
     and @range2start <= @range1end THEN 1 ELSE 0 END 

है आप का मतलब है कि daterange2 daterange1 के भीतर पूरी तरह पड़ना चाहिए, तो

CASE WHEN @range1start <= @range2start 
     and @range2end <= @range1end THEN 1 ELSE 0 END 
+0

धन्यवाद, मैंने सोचा कि इसे ऐसा कुछ होना चाहिए, बस इसे – wondergoat77

+0

पर नहीं पता था, दूसरा एक बिल्कुल वही था जो मुझे चाहिए, धन्यवाद – wondergoat77

+0

आपको बहुत धन्यवाद। उसे सराहना। – amilaishere

-1

चयन * से टी जहां (StartDate और closedate के बीच beginningdate या स्टार्टडेट और बंद या (प्रारंभ दिनांक < स्टार्टडेट और एंडिंगडेट> = बंद) के बीच समाप्ति दिनांक;

संबंधित मुद्दे