2017-02-14 209 views
1

我想編寫一個查詢,其中需要指定從訂單日期開始的日期的自定義範圍(而不是硬編碼日期範圍)。在使用的表格中,我有訂單的日期。在SQL查詢中指定自定義日期範圍

截至目前我已經硬編碼的日期範圍,如:

where owh.order_day between TO_DATE('2016/07/15','YYYY/MM/DD') and TO_DATE('2017/01/17','YYYY/MM/DD') 

其中order_day是一個日期。

反倒是我想是這樣的:

where owh.order_day between TO_DATE(owh.order_day - 1,'YYYY/MM/DD') and TO_DATE(owh.order_day +3,'YYYY/MM/DD') 

我做 「-1」,因爲它的 「之間」,所以它會從order_day - order_day + 2

例如,如果order_day是:「2016年1月1日」,那麼我想要的條件是日期範圍動態計算爲:「2016年1月16日 - 20/01/2016」。 是這樣的可能嗎?如果是的話,我們如何才能在SQL中實現?

的DB的問題是Oracle 任何線索讚賞

+1

SQL Server不具有'TO_DATE()'函數。你使用的是哪個數據庫? –

+0

它是一個公司特定的數據庫。這通常可能在任何SQL查詢中? – user2696258

+0

這個問題根本沒有意義。你想比較'order_day'到一個基於'order_day'的範圍。編輯你的問題(或問另一個問題)。使用您正在使用的正確數據庫進行標記。提供樣本數據和期望的結果。 –

回答

0

因爲你還沒有告訴我們你在使用了,既然你都這麼說「任何線索讚賞」,這RDBMS,我想我們可以自由地給出一個答案對於任何RDBMS。下面將針對MySQL的工作:

BETWEEN DATE_SUB(somedate, INTERVAL 1 DAY) AND DATE_ADD(somedate, INTERVAL 1 DAY) 

(來源:https://www.tutorialspoint.com/sql/sql-date-functions.htm#function_date-add

+0

DB是oracle。這個解決方案能完成嗎? – user2696258

+0

LMGTFY:https://docs.oracle.com/cd/E57340_01/DR/Dateadd.html –