2011-07-12 48 views
1

假設我有一個日期列,其日期爲31-JUL-2011。 我使用返回31-JUL-11的LAST_DAY(sysdate)來獲取本月的最後一個日期。但是當我做一個簡單=比較它不給結果..我的意思是假設tablename.lastdateofmonth = LAST_DAY(sysdate)它不給結果,但如果我使用tablename.lastdateofmonth = to_date('2011/07/31' ,'yyyy/mm/dd')它會給出結果。oracle LAST_DAY(sysdate)比較問題

謝謝。

回答

5

最後一天使當前日期成爲該月的最後一天。但它保持時間。 如果您打算僅比較每天的年份,則必須截斷這些值。摧毀它們將解決您的問題。

tablename.lastdateofmonth = trunc(LAST_DAY(sysdate)) 
+0

請記住...您可能還需要雙方的trunc(),具體取決於值如何存儲在數據庫中。 –

1

LAST_DAY(sysdate)將返回包含時間部分的月份的最後日期。

看起來像lastdateofmon中的數據只是日期部分,imte部分默認爲12:00 AM。

嘗試使用此:

tablename.lastdateofmonth = TRUNC(LAST_DAY(sysdate)) 
1

LAST_DAY()保留SYSDATE的時間分量。像這樣與trunc()一起使用:

select * 
from table_name 
where lastdateofmonth = last_day(trunc(sysdate));