目前有varchar2(50)存放 Jun 19 2013  5:51:53:000PM 
需要转换为  2013-06-19 17:51:53 这个样子的
请问该怎么写sql呢。我查阅了好多资料 仍然不能改!!求大哥们帮忙啊!!SQL

解决方案 »

  1.   

    select cast(to_timestamp('Jun 19 2013  5:51:53.000am',
                             'Mon dd yyyy hh:mi:ss.ffpm',
                             'NLS_DATE_LANGUAGE = American') as date)
      from dual;
      

  2.   

    感谢2楼, 但用plsql 执行了报  要求 AM/A.M 或 PM/P.M 这个是什么原因?
      

  3.   

    感谢2楼, 但用plsql 执行了报  要求 AM/A.M 或 PM/P.M 这个是什么原因?
      

  4.   

    感谢2楼, 但用plsql 执行了报  要求 AM/A.M 或 PM/P.M 这个是什么原因?你是执行的我这个sql?
      

  5.   

    感谢2楼, 但用plsql 执行了报  要求 AM/A.M 或 PM/P.M 这个是什么原因?你是执行的我这个sql?是的 一字不差 执行了 就是这个错误。。
      

  6.   

    感谢2楼, 但用plsql 执行了报  要求 AM/A.M 或 PM/P.M 这个是什么原因?你是执行的我这个sql?是的 一字不差 执行了 就是这个错误。。我这里可以执行啊,那下面 的sql能执行吗?select cast(to_timestamp('Jun 19 2013  5:51:53.000',
                             'Mon dd yyyy hh:mi:ss.ff',
                             'NLS_DATE_LANGUAGE = American') as date)
      from dual;
      

  7.   

    感谢2楼, 但用plsql 执行了报  要求 AM/A.M 或 PM/P.M 这个是什么原因?你是执行的我这个sql?是的 一字不差 执行了 就是这个错误。。我这里可以执行啊,那下面 的sql能执行吗?select cast(to_timestamp('Jun 19 2013  5:51:53.000',
                             'Mon dd yyyy hh:mi:ss.ff',
                             'NLS_DATE_LANGUAGE = American') as date)
      from dual;执行这个报  ORA-01830  日期格式图片在转换整个输入字符串之前结束。
      

  8.   

    格式匹配问题,把.ffpm改成:ffpm就好了,字符串是:000PM
    select cast(to_timestamp('Jun 19 2013  5:51:53:000PM',
                             'Mon dd yyyy hh:mi:ss:ffpm',
                             'NLS_DATE_LANGUAGE = American') as date)
    from dual;
      

  9.   

    select 
    to_char(
    to_date(substr('Jun 19 2013  5:51:53:000PM',0,length('jun 19 2013  5:51:53:000PM')-6),'mm dd YYYY  hh24:mi:ss','NLS_DATE_LANGUAGE = American')+
        decode(substr('Jun 19 2013  5:51:53:000PM',length('jun 19 2013  5:51:53:000PM')-1),'PM',0.5,0)
    ,
    'yyyy-mm-dd hh24:mi:ss'
    )
     from dual
    这样试试