我有兩個變量TO_DATE
和FROM_DATE
。我的桌子有兩個字段DOJ
和DOL
。我想選擇所有的記錄DOJ < TO_DATE and DOL > FROM_DATE
。Oracle數據庫中的日期比較
如何爲此編寫SQL查詢?
我有兩個變量TO_DATE
和FROM_DATE
。我的桌子有兩個字段DOJ
和DOL
。我想選擇所有的記錄DOJ < TO_DATE and DOL > FROM_DATE
。Oracle數據庫中的日期比較
如何爲此編寫SQL查詢?
您可能會遇到與變量名爲TO_DATE煩惱,因爲這是一個內置的Oracle命令。您可以解決在使用雙引號的地方使用變量,就像這樣:
SELECT * FROM my_table WHERE doj < "to_date" AND dol > from_date;
目前尚不清楚您想要做什麼。
我想選擇其DOJ < TO_DATE和,在此期間,DOL> FROM_DATE的所有記錄。
SELECT *
FROM MY_TABLE
WHERE DOJ < "TO_DATE" AND DOL > "FROM_DATE"; -- using double quotes in order to
-- avoid confusion with TO_DATE
-- built-in function with the same name.
-- Thanks to kicsit ;-)
我想選擇其DOJ < TO_DATE,並單獨DOL> FROM_DATE的所有記錄。
SELECT *
FROM MY_TABLE
WHERE DOJ < "TO_DATE"
UNION -- UNION ALL substituted with UNION, thanks to kicsit user ;-)
SELECT *
FROM MY_TABLE
WHERE DOL > "FROM_DATE";
...或者 - 這是相同的:
SELECT *
FROM MY_TABLE
WHERE DOJ < "TO_DATE" OR DOL > "FROM_DATE";
在「第二種解釋」不產生相同的結果,因爲UNION ALL將產生滿足所有行的重複這兩個查詢兩種情況。 – kicsit 2010-05-26 11:17:56
你是對的! ;-) 我用「UNION」替代了「UNION ALL」,刪除了DUPLICATES ;-) – UltraCommit 2010-05-26 11:25:24
是的,避免與TO_DATE內置的Oracle函數混淆是非常重要的;-) – UltraCommit 2010-05-26 11:34:19