select to_date('2013', 'yyyy') from dual;查询出来的结果为2013-08-01
to_date('2013','yyyy')>to_date('20130701','yyyymmdd')这个条件满足,所以为true,
to_date('2013','yyyy')>to_date('20130801','yyyymmdd')这里结果为相等,所以结果为false.
如果改为to_date('2013','yyyy')>=to_date('20130801','yyyymmdd')结果就为true

解决方案 »

  1.   

           select to_date('2013', 'yyyy') from dual;查询出来的结果为2013-08-01
    to_date('2013','yyyy')>to_date('20130701','yyyymmdd')这个条件满足,所以为true,
    to_date('2013','yyyy')>to_date('20130801','yyyymmdd')这里结果为相等,所以结果为false.
    如果改为to_date('2013','yyyy')>=to_date('20130801','yyyymmdd')结果就为true
    正解,我记得早期版本返回的是本年的第一天,始终不知道为啥要改成现在这样
      

  2.   

           select to_date('2013', 'yyyy') from dual;查询出来的结果为2013-08-01
    to_date('2013','yyyy')>to_date('20130701','yyyymmdd')这个条件满足,所以为true,
    to_date('2013','yyyy')>to_date('20130801','yyyymmdd')这里结果为相等,所以结果为false.
    如果改为to_date('2013','yyyy')>=to_date('20130801','yyyymmdd')结果就为true
    正解,我记得早期版本返回的是本年的第一天,始终不知道为啥要改成现在这样我也以为是 每年的第一天,  现在 看来取的是年份以及 当前月的第一天啊。   的确觉得以前的更说得通。
      

  3.   

           select to_date('2013', 'yyyy') from dual;查询出来的结果为2013-08-01
    to_date('2013','yyyy')>to_date('20130701','yyyymmdd')这个条件满足,所以为true,
    to_date('2013','yyyy')>to_date('20130801','yyyymmdd')这里结果为相等,所以结果为false.
    如果改为to_date('2013','yyyy')>=to_date('20130801','yyyymmdd')结果就为true
    之前都以为是返回本年第一天,涨姿势了。
      

  4.   

    SQL> SELECT to_date('2013','yyyy'),to_date('20130701','yyyymmdd')FROM DUAL;TO_DATE('2013','YYY TO_DATE('20130701',
    ------------------- -------------------
    2013-08-01 00:00:00 2013-07-01 00:00:00
      

  5.   

    奇怪的是,年会去当前月, 月却不会取当前的天。  SQL> 
    SQL> select to_date('2014','yyyy') from dual
      2  union all
      3  select to_date('201406','yyyymm') from dual
      4  ;
     
    TO_DATE('2014','YYYY')
    ----------------------
    2014/8/1
    2014/6/1
     
    SQL> 
      

  6.   

    select case when to_date('2013','yyyy')=to_date('20130801','yyyymmdd') then 'true' else 'false' end  from dual;
    结果为true。这两个是相等的
      

  7.   

    楼主的两句代码我都运行了,都是TRUE,不是FALSE啊,楼主的FALSE怎么得来的?
    select to_date('2014','yyyy') from dual;获取的是当月的第一天,如下所示:运行一下
      

  8.   

    哈哈,笑了,to_date('xxxx','yyyy')应该是取当前月第一天,to_date('xxxxyy','yyyyMM')应取yy月的第一天