2016-10-27 18 views
1

我有以下查詢,從當月獲得從表中的記錄查詢到「得到的實際月記錄」並不讓我有更大的日子記錄,目前的一個

select * 
from 
    myTable 
where 
    my_date BETWEEN trunc (sysdate, 'mm') AND SYSDATE; 

此查詢的工作,如果相比目前一個 例如記錄有一個較低的一天:如果今天是27/10/2016和我有這個日的記錄:28/10/2016 與日期28/10/2016記錄沒有顯示

我使用這種格式插入記錄TO_DATE('28/10/2016 18:02:44', 'dd/mm/yyyy hh24:mi:ss')

我想表明從CURREN月份中的所有記錄,即使這一天是比實際日期

+0

你是否需要比當月第一天更多的日期? – Aleksej

+0

我只想要當天有一個日期的記錄 –

回答

3

或者:

select * 
from 
    myTable 
where 
    my_date BETWEEN trunc (sysdate, 'mm') AND add_months(trunc (sysdate, 'mm'),1)- 1/(24*3600) 

select * 
from 
    myTable 
where 
    trunc(my_date,'mm') = trunc (sysdate, 'mm') 

首先是可優化搜索,第二個是更具有可讀性。

+0

謝謝我試過第二個,它的工作,但我不知道我是否應該接受答案由於該問題是投票下來,這將是針對計算器政策,我應該刪除我的問題,而不是? –

+1

只提供關於第一個解決方案的提示 - 如果您的my_date列中包含時間元素,那麼您將缺少最後一天午夜之後的所有行。 'my_date> = trunc(sysdate,'mm')和my_date Boneist

+0

@骨氣師葉,好點 – JohnHC

1

做大如果您需要在當月

trunc(my_date, 'mm') = trunc(sysdate, 'mm') 

日期,如果您需要從目前的月份和日期上:

my_date >= trunc(sysdate, 'mm') 
+0

如果在未來幾個月中沒有日期,這將工作 – JohnHC

相關問題