select *  from CaseInfo c where to_char(to_date(c.receivedate,'yyyy-MM-dd HH24:MI:SS'),'yyyy-MM') = '2010-06'receivedate是varchar2类型原来写这语句是对的,后来换了数据库 出ORA-01840: 输入值对于日期格式不够长
是oracle版本的问题么?

解决方案 »

  1.   

    有數據比符合yyyy-MM-dd HH24:MI:SS這個格式吧
      

  2.   

    数据问题,数据无法满足to_date(c.receivedate,'yyyy-MM-dd HH24:MI:SS')
      

  3.   

    直接 select * from caseinfo where receivedate like '2010-06%';
    这里假设receivedate 字段数据格式都一致。
      

  4.   


    就是假如你的receivedate里面有个值是 "2010-01".不满足格式化要求'yyyy-MM-dd HH24:MI:SS')SQL> select to_date('2010-01','yyyy-MM-dd HH24:MI:SS') from dual;
    select to_date('2010-01','yyyy-MM-dd HH24:MI:SS') from dual
                   *
    第 1 行出现错误:
    ORA-01840: 输入值对于日期格式不够长
      

  5.   

    我的数据库里面数据格式应该没问题
    先试试直接 select * from caseinfo where receivedate like '2010-06%';
    能不能解决我的问题,能就结贴给分
      

  6.   


    如果你的格式都是yyyy-mm这样开头的话
    直接这样做:select *  from CaseInfo c where substr(c.receivedate,1,7) = '2010-06';
      

  7.   


    substr无法使用索引,还要建函数索引。
      

  8.   


    格式匹配问题 你的c.receivedate的内容是什么  贴出来