2013-03-15 55 views
1

首先...對不起我的英語。Oracle - 月查詢的另一種方法是什麼?

我有這樣的查詢:

Select * 
From tableA 
Where (
      TO_NUMBER(TO_CHAR(dateA(+),'SYYYY')) = 2013 
      AND TO_NUMBER(TO_CHAR(dateA(+),'MM')) = 02 
      AND to_number(to_char(dateA(+),'dd')) <= 25 
     ) 

和檢索我從每一天,直到我給的參數最後一個數字的數據,在這種情況下,25天這個工作,但延遲非常,因爲「Where」語句的形式......任何人都知道另一種快速且具有相同功能的方式來檢索數據?

+0

爲什麼不是簡單的'日期在'之間? – Mat 2013-03-15 15:46:01

+0

因爲客戶只想選擇一個日期u.u – K1988 2013-03-15 15:50:08

+0

這可能是一個灰色地帶,但我認爲需要調整的工作代碼更適合代碼評論網站。 – bernie 2013-03-15 15:52:52

回答

2

這聽起來像你想

SELECT * 
    FROM tableA 
WHERE dateA BETWEEN trunc(date '2013-02-26', 'MM') AND date '2013-02-26' 

這將返回所有的行,其中dateA是第一個月,並在指定的日期之間。如果在dateA上有一個索引,Oracle可以將它用於這種查詢(儘管它實際上是否是一個單獨的問題)。

+1

如果數據沒有時間分量存儲,這也會返回額外的一天。 – 2013-03-15 16:00:12

+0

是的,這是我想要做的!非常感謝,Justin Cave n__n – K1988 2013-03-15 16:09:04

相關問題