假设我有一个Date列,其日期为31-JUL-2011。 我使用返回31-JUL-11的LAST_DAY(sysdate)得到了当月的最后一个日期。但是当我做一个简单的=比较它没有给出结果..我的意思是假设tablename.lastdateofmonth = LAST_DAY(sysdate)它没有给出结果但是如果我使用tablename.lastdateofmonth = to_date('2011/07/31' ,'yyyy / mm / dd')它给出了结果。
感谢。
答案 0 :(得分:5)
最后一天将当前日期作为该月的最后一天。但它保留时间。 如果要比较它们仅按日 - 月,则必须截断值。解决它们将解决您的问题。
tablename.lastdateofmonth = trunc(LAST_DAY(sysdate))
答案 1 :(得分:1)
LAST_DAY(sysdate)会返回包含时间部分的月份的最后日期。
看起来,lastdateofmonth列中的数据只是日期部分,而imte部分默认为12:00 AM。
尝试使用:
tablename.lastdateofmonth = TRUNC(LAST_DAY(sysdate))
答案 2 :(得分:1)
last_day()保留sysdate的time组件。将它与trunc()一起使用,如下所示:
select *
from table_name
where lastdateofmonth = last_day(trunc(sysdate));