我正在PL/SQL中編寫一些SQL查詢,這些查詢要求我根據日期篩選記錄。該字段是一個日期/時間類型,但由於我並不真正在意我計算的時間,所以我只是從where子句中省略它。vs> = startdate和<= enddate之間的SQL
所以我寫的東西像
WHERE f.logdate between to_date('2011/01/01', 'yyyy/mm/dd') and to_date('2011/01/31', 'yyyy/mm/dd')
要獲取所有記錄月份。我讀這應該是等同於
WHERE f.logdate >= to_date('2011/01/01', 'yyyy/mm/dd') and f.logdate <= to_date('2011/01/31', 'yyyy/mm/dd')
但我的最終結果不出我所料:有較少的記錄,當我使用BETWEEN關鍵字比我明確規定的範圍。這是因爲我對BETWEEN做什麼的假設是錯誤的?
編輯:嗯nvm,看來日期不是問題。有一個我正在使用的子查詢是按日期過濾其結果集,並指定日期/時間,而我不是。
這看起來像BETWEEN應該如何工作。您是否可以用足夠小的樣本複製它,以便可以發佈輸出,最好是顯示全部時間和日期? – 2011-03-29 18:30:44
你能否在你的查詢中有一個OR子句影響你的操作順序? – 2011-03-29 18:39:38
@Bill不幸的是,即使我減少到一天,仍然有很多記錄。 @PMV:這是唯一的條件 – MxyL 2011-03-29 18:43:22