在数据库中,有一个字段为字符型的,里面存的值有的为:2007-6-5 14:36:47 有的为:2007-6-5 我想将其取出时统一用一个sql变为:2007-6-5这样的格式,但转换2007-6-5 14:36:47 类型的时候一直报错,这是怎么回事?无效数字! oracle 9

解决方案 »

  1.   

    to_date('2007-6-5 14:36:47','yyyy-mm-dd hh24:mi:dd')
      

  2.   

    to_date('2007-6-5 14:36:47','yyyy-mm-dd')
      

  3.   

    to: shui_windows() 你试了吗?不行吧.ORA-01830:日期格式图片在转换整个输入字符串之前结束?什么意思?SELECT to_date('2007-6-5 14:36:47','yyyy-mm-dd') FROM DUAL
      

  4.   

    SELECT to_date('2007-6-5 04:36:47','yyyy-mm-dd hh24:mi:ss')  FROM DUAL
      

  5.   

    SELECT to_date('2007-6-5','yyyy-mm-dd hh24:mi:ss')  FROM DUAL
      

  6.   

    想通啦搞定啦select to_date(to_char(to_date('2007-6-5 04:36:47','yyyy-MM-dd HH24:mi:ss'),'yyyy-mm-dd'),'yyyy-mm-dd') from dual
      

  7.   

    to_date(to_char(dateclolum,'yyyy-mmydd'),'yyyy-mm-dd')
      

  8.   

    可以在oracle用户的环境变量里面固定日记格式.
    比如:
    NLS_DATE_FORMAT=YYYYMMDDHH24MISS, export NLS_DATE_FORMAT
    也可以选择其他格式的, 这样每次去查询的时候都用同样的格式就可以了.
      

  9.   

    同意 Hopewell_Go(好的在后頭﹗希望更好﹗﹗) 的!顶!
      

  10.   


    1 转成只有日期的日期型
    SELECT trunc(to_date('2007-6-5 04:36:47','yyyy-mm-dd hh24:mi:ss'))  FROM DUAL
    2 转成只有日期的字符串型
    SELEC to_char( trunc(to_date('2007-6-5 04:36:47','yyyy-mm-dd hh24:mi:ss')),'yyyy-dd-mm' )  FROM DUAL
      

  11.   

    这个答案更好:
    ORA-01830: 日期格式图片在转换整个输入字符串之前结束
     
    问题:varchar2类型转换成date类型
    select to_date(INVOICE_DATE,'yyyy-mm-dd') from tab; --INVOICE_DATE varchar2(30)
    提示 ORA-01830: 日期格式图片在转换整个输入字符串之前结束 错误
    最后查的原因:INVOICE_DATE=‘2005-11-10 00:00:00’的长度大于格式化'yyyy-mm-dd'的长度
     
    解决:(使用substr())
    to_date(substr(INVOICE_DATE,1,10),'yyyy-mm-dd')