to_date(b.installationdate,'yyyy-mm-dd') between '2000-4-28' and '2006-4-28'请问我这里写错了吗`???
我只想取字段中``某时间到某时间installationdate
2008-06-01
2008-05-01
2008-06-01

解决方案 »

  1.   

    between和and中是字符串类型的, 前面是date类型的, 不能作比较, 需要先to_dateSQL> select HIREDATE from emp e where e.hiredate
      2  between to_date('1980-1-1','yyyy-mm-dd') and to_date('1981-1-1','yyyy-mm-dd')
      3  /
     
    HIREDATE
    -----------
    1980-12-17
      

  2.   


    SQL> select * from t3
      2  where to_date(installationdate,'yyyy-mm-dd') between '2008-05-01' and '2008-05-08';select * from t3
    where to_date(installationdate,'yyyy-mm-dd') between '2008-05-01' and '2008-05-08'ORA-01861: literal does not match format stringSQL> 
    SQL> select * from t3
      2  where to_date(installationdate,'yyyy-mm-dd')
      3  between to_date('2008-05-01','yyyy-mm-dd') and to_date('2008-05-08','yyyy-mm-dd');INSTALLATIONDATE
    ------------------------------
    2008-05-01SQL> select * from t3;INSTALLATIONDATE
    ------------------------------
    2008-06-01
    2008-05-01
    2008-06-01
      

  3.   

    本身DATA类型的不能用to_date
    date型的必须和date型的比较,不能和字符型的比较
    ORACLE里对DATE型和VARCHAR的比较比SQL SERVER里严格
      

  4.   

    to_char(b.installationdate,'yyyy-mm-dd') between '2000-4-28' and '2006-4-28'