to_char(to_date(finishdate,'yyyy-MM-dd'),'yyyy-MM-dd')<= '2013-04-22'
类似上面这样当finishdate中有'2012-3-21'这种格式时就没法转 谁能告诉我怎么整

解决方案 »

  1.   

    测试了一下,没问题啊
    当 字符型 finishdate=‘2013-3-21’ 时,to_date(finishdate,'yyyy-MM-dd')=2013-03-21 00:00:00 然后再to_char 就变成2012-03-21了
      

  2.   

    SQL> select to_char(to_date('2013-3-21','yyyy-MM-dd'),'yyyy-MM-dd') from dual;TO_CHAR(TO_DATE('2013-3-21','Y
    ------------------------------
    2013-03-21
    没问题,亲
      

  3.   

    oracle时间比较,不要用字符串呀
    select * from table where finishdate <= to_date('2013-04-22','yyyy/mm/dd')
      

  4.   

    你表中存日期的不是datetime类型?
     to_date(isnull(finishdate,'为空的值,或直接用null'),'yyyy/mm/dd'))<= to_date('2013-04-22','yyyy/mm/dd')
      

  5.   

     to_date(nvl(finishdate,'默认值'),'yyyy-MM-dd'))<= to_date('2013-04-22','yyyy-MM-dd')
      

  6.   

    没有 当初建表的时候用的char这一列中 有空的 有2013-8-1 还有2013-12-30这种得 所以在查这一列跟其他日期比较的时候才会有问题 我现在已经控制保存的时候按yyyy-MM-dd来了 我只是想问一下 原先的数据怎么能转成yyyy-MM-dd 的格式来比较呢 上边俩位的方法试过了 不行的 你们可以还原一下表试一下 是跟字段类型有关系吧