【问题标题】:oracle LAST_DAY(sysdate) comparison problemoracle LAST_DAY(sysdate) 比较问题
【发布时间】:2011-07-12 13:06:46
【问题描述】:

假设我有一个日期列,其日期为 2011 年 7 月 31 日。 我使用返回 31-JUL-11 的 LAST_DAY(sysdate) 获取该月的最后一个日期。但是当我做一个简单的 = 比较时,它没有给出结果..我的意思是假设 tablename.lastdateofmonth = LAST_DAY(sysdate) 它没有给出结果,但是如果我使用 tablename.lastdateofmonth = to_date('2011/07/31' , 'yyyy/mm/dd') 它给出了结果。

谢谢。

【问题讨论】:

    标签: sql database oracle plsql


    【解决方案1】:

    last day 使当前日期成为该月的最后一天。但是它保持时间。 如果您要按天-月-年比较它们,则必须截断这些值。截断它们将解决您的问题。

    tablename.lastdateofmonth = trunc(LAST_DAY(sysdate))
    

    【讨论】:

    • 请记住...根据值在数据库中的存储方式,您可能还需要两边都有一个 trunc()。
    【解决方案2】:

    LAST_DAY(sysdate) 将返回该月的最后一个日期,包括时间部分。

    看起来 lastdateofmonth 列中的数据只有日期部分,而 imte 部分默认为 12:00 AM。

    试试这个:

    tablename.lastdateofmonth = TRUNC(LAST_DAY(sysdate))
    

    【讨论】:

      【解决方案3】:

      last_day() 保留 sysdate 的时间部分。像这样与 trunc() 一起使用:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-02-27
        • 2019-06-24
        • 2018-10-03
        • 2020-08-14
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多