我想按年月查数据写了两种方式,不知道为什么数据量结果不一样
select * from ppm_checkdebitdetail where   
trunc(Cdd_PassTime)=to_date('2013-7','yyyy-MM');
--------------------------------------------------------------
select * from ppm_checkdebitdetail where    to_CHAR( trunc(Cdd_PassTime),'yyyy-MM')='2013-07'

解决方案 »

  1.   

    当然不一样了,select * from ppm_checkdebitdetail where   
    trunc(Cdd_PassTime)=to_date('2013-7','yyyy-MM');  你查询的是2013-07-01 的数据。
    select * from ppm_checkdebitdetail where    to_CHAR( trunc(Cdd_PassTime),'yyyy-MM')='2013-07'  查询的是2013-07的数据
      

  2.   


    select trunc(sysdate) ,trunc(sysdate-17),to_date('2017-01','yyyy-MM') from dual; 运行一下这一句,你就理解了。
      

  3.   

    楼上正解另外这句子trunc可以省略吧select * from ppm_checkdebitdetail where    to_CHAR( trunc(Cdd_PassTime),'yyyy-MM')='2013-07'
      

  4.   

    trunc(sysdate),只写一个参数时,截断到天。trunc(sydate,'mm'),可以截断到月。
      

  5.   


    不行啊。我试了trunc(sysdate,'mm')
    结果SQL> SELECT trunc(sysdate,'mm') FROM dual;
     
    TRUNC(SYSDATE,'MM')
    --------------------
    2017/1/1
     
    SQL> 
      

  6.   


    不行啊。我试了trunc(sysdate,'mm')
    结果SQL> SELECT trunc(sysdate,'mm') FROM dual;
     
    TRUNC(SYSDATE,'MM')
    --------------------
    2017/1/1
     
    SQL> 
    有啥问题,本来就是1月,截断到月本来就是1月1号
      

  7.   


    不行啊。我试了trunc(sysdate,'mm')
    结果SQL> SELECT trunc(sysdate,'mm') FROM dual;
     
    TRUNC(SYSDATE,'MM')
    --------------------
    2017/1/1
     
    SQL> 
    截断到月表示当年1月1号,截断到天表示当月1号,注意data格式都是yyyy-mm-dd hh24:mi:ss的,就是说 trunc(sysdate,'mm')实际时间点是 2017/1/1 00:00:00