2012-10-11 69 views
12

Tôi đang cố gắng tìm hiểu xem có cách nào trong sql (t-sql ưa thích) để xác định xem phạm vi ngày có nằm trong khoảng thời gian khác hay không.xác định xem phạm vi ngày có nằm trong khoảng thời gian khác hay không - sql

cho các mục đích của ví dụ của tôi: daterange1 = i có phạm vi ngày được xác định, ngày là 1/1/2012 - 1/5/2012 daterange2 = i có hai ngày khác để làm việc, cho phép nói 1/3/2012 và 1/4/2012

tôi đang cố gắng để có này để sử dụng trong một tuyên bố CASE cho một cái gì đó như thế này

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

có thể như vậy trong SQL? Tôi thực sự bối rối về điều này, tôi biết làm thế nào để tìm ra nếu một ngày duy nhất nằm giữa một phạm vi, nhưng làm thế nào nó có thể được thực hiện với một phạm vi ngày? câu trả lời không nhất thiết cần phải có trong một tuyên bố CASE nhưng nó được ưa thích.

Trả lời

23

Làm cách nào để nhận được daterange1 = 0, vì đó là phạm vi, tức là 2 giá trị?

Các thử nghiệm thích hợp cho những ngày chồng chéo là

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

Nếu bạn có nghĩa là daterange2 phải rơi hoàn toàn trong daterange1, sau đó

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

cảm ơn bạn, tôi nghĩ rằng nó phải là một cái gì đó như thế, chỉ cần không thể tìm ra nó – wondergoat77

+0

thứ hai là chính xác những gì tôi cần, cảm ơn một lần nữa – wondergoat77

+0

Cảm ơn bạn rất nhiều. Đánh giá cao điều đó. – amilaishere

-1

chọn * từ t nơi (beginningdate giữa STARTDATE và closedate HOẶC kết thúc giữa ngày bắt đầu và đóng cửa HOẶC (ngày bắt đầu < ngày bắt đầu và ngày kết thúc> = đã đóng));

Các vấn đề liên quan