oracle LAST_DAY(sysdate)比较问题

时间:2011-07-12 13:06:47

标签: sql database oracle plsql

假设我有一个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')它给出了结果。

感谢。

3 个答案:

答案 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));