2012-10-11 32 views
12

arasında olup olmadığını belirler. Bir tarih aralığının başka bir tarih aralığı arasında olup olmadığını belirlemek için sql (t-sql tercih edilir) yolunun bulunup bulunmadığını bulmaya çalışıyorum., tarih aralığının başka bir tarih aralığı - sql

benim örnek amacıyla

: daterange1 = i, tarihler tanımlanmış bir tarih aralığı olan var 1/1/2012 - 2012/01/05 daterange2 = i çalışmak için diğer iki tarihleri ​​var, 1/3 sağlar ki/2012 ve 1/4/2012

ben bu bu

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

gibi bir şey için bir CASE açıklamada kullanmak zorunda çalışıyorum SQL bu mümkün mü? Bu konuda gerçekten şaşırdım, tek bir tarihin bir aralık arasında düştüğünü nasıl anlayacağımı biliyorum, ancak bir tarih aralığıyla nasıl yapılabilir? cevabın mutlaka bir CASE ifadesinde olması gerekmiyor ama tercih ediliyor.

cevap

23

daterange1 = 0, bir aralık olduğu için, yani 2 değer nasıl elde edebilirsiniz?

örtüşen tarihlerde uygun test, sonra daterange2 daterange1 içinde TAMAMEN düşmesi gerektiğini kastediyorsan

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

olduğunu

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

Teşekkür ederim, bunun böyle bir şey olması gerektiğini düşündüm, sadece bunu anlayamadım – wondergoat77

+0

ikincisi tam olarak neye ihtiyacım vardı, teşekkürler – wondergoat77

+0

Çok teşekkür ederim. Memnun olurum. – amilaishere

-1

select * STARTDATE ve closedate arasındaki den t nerede (beginningdate VEYA başlangıç ​​ve kapanış tarihi arasındaki bitiş tarihi VEYA (başlangıç ​​tarihi < başlangıç ​​ve bitiş tarihi> = kapanma tarihi));

İlgili konular