2015-10-02 45 views
0

我有一個saledateid(天)和saletimeid(分鐘)尺寸的報表。我需要選擇一個可能少於或超過一天的範圍。如果範圍超過一天(例如(1705, 901) -> (1708, 1140)代表2015-09-01 15:00:00 -> 2015-09-04 18:59:00)我可以使用:如何爲日期和時間維度創建SQL範圍?

WHERE (saledateid = 1705 AND saletimeid >= 901) 
    OR (saledateid BETWEEN 1705 + 1 AND 1708 - 1) 
    OR (saledateid = 1708 AND saletimeid <= 1140)) 

然而,當saledateid的是相同的(不到一天)這不工作像(1708, 901) to (1708, 1140)(只4小時),因爲整天都會被退回。我將不得不使用:

WHERE saledateid = 1708 AND saletimeid BETWEEN 901 AND 1140 

是否有一個正確的表達我可以使用支付這兩種情況下還是必須在應用程序代碼執行SQL之前決定?

+0

你可以嘗試更好地解釋什麼邏輯應該做的事情? –

+0

我已經說明了 –

回答

2

我認爲這會做你想要什麼:

where (saledateid > 1705 or 
     saledateid = 1705 and saletimeid >= 901 
    ) and 
     (saledateid < 1708 or 
     saledateid = 1708 and saletimeid <= 1140 
    ) 
+0

那就是我想要的!我無法編輯您的帖子來修復saletimeid,因爲編輯太小。 –