2012-08-15 152 views
0

我在SQL Query中有這個地方。我想知道是否可以限制該用戶只能選擇2天的日期範圍。這意味着他們不能選擇1個月或1周或超過2天的差異數據範圍。SQL查詢數據範圍限制

WHERE 
    To_Date(to_char(B.time_stamp, 'DD-MON-YYYY')) >= To_Date('?DATE1::?','MM/DD/YYYY') 
and To_Date(to_char(B.rest_date, 'DD-MON-YYYY')) <= To_Date('?DATE2::?','MM/DD/YYYY') 
+1

甲骨文,我想? – 2012-08-15 16:34:43

+0

@Michael對不起,我不明白你的意思,你想讓我添加Oracle標籤嗎? – Mowgli 2012-08-15 16:38:00

+0

是的 - 只是確認它是Oracle,所以它可以被標記爲 – 2012-08-15 16:42:01

回答

0

如果我理解你的問題,你只是問如何限制兩個日期,以便他們在兩天之內彼此。日期數學是Oracle很簡單(這是我的猜測,您正在使用的DB):

WHERE ABS(Date1 - Date2) <= 2 

你並不需要將其轉換爲所有TO_CHAR或其他任何東西,因爲它是作爲內部存儲一個實際的日期。您可以使用相同類型的邏輯來確保它少於16小時:

WHERE ABS(Date1 - Date2) <= 16/24 

只要您記得適當調整您的單位。

請注意,在這種情況下,2天意味着48小時。如果你的意思是它必須是2個實際的日子,那麼它就會有所不同。

+0

''?DATE2 ::?''和''?DATE1 ::?''是html的一部分,意味着用戶通過html選擇範圍,我不知道這是否會有所作爲。 **編輯**我試過了,我得到這個錯誤,'在處理命令期間發生了一個或多個錯誤。 ORA-00933:SQL命令沒有正確地結束於' – Mowgli 2012-08-15 16:44:52

+0

我不認爲我理解畢竟。你能澄清你的問題嗎?什麼是b.time_stamp和b.rest_date? DATE1和DATE2從哪裏來?哪些日期需要最多有兩天的差異? – MJB 2012-08-15 16:57:35

+0

'B.time_stamp = DATE1'和'B.rest_date = DATE2''?DATE1 ::?'和'?DATE2 ::?'表示用戶可以從下拉菜單中選擇。或者如果我有'B.time_stamp = 08/10/2012'和'B.rest_date = 08/15/2012'這意味着手動編碼的用戶不能更改日期。所以date1和date2給用戶選擇日期,如果沒有,我必須手動輸入查詢代碼。 – Mowgli 2012-08-15 17:45:57