相当于to_char(date,'yyyy-mm-dd hh24:mi')

解决方案 »

  1.   

    能不能给出整个函数的代码呀?我对oracle不大熟...
      

  2.   

    需要先将日期的语言设置为英文。
    alter session set NLS_DATE_LANGUAGE='AMERICAN';然后可以直接用to_date函数来转。
    to_date(S_DATEVALUE, 'mm/dd/yyyy hh:mi:ss AM')如果必须忽略秒数,可以再用trunc处理下
    trunc(to_date(S_DATEVALUE, 'mm/dd/yyyy hh:mi:ss AM'),'mi')
      

  3.   

    SQL> alter session set NLS_DATE_FORMAT='yyyy-mm-dd hh24:mi:ss';会话已更改。SQL> alter session set NLS_DATE_LANGUAGE='AMERICAN';会话已更改。SQL> select trunc(to_date('05-01-2005 10:13:12 AM','mm/dd/yyyy hh:mi:ss AM'),'mi') from dual;TRUNC(TO_DATE('05-0
    -------------------
    2005-05-01 10:13:00SQL> select trunc(to_date('05-01-2005 12:13:12 AM','mm/dd/yyyy hh:mi:ss AM'),'mi') from dual;TRUNC(TO_DATE('05-0
    -------------------
    2005-05-01 00:13:00SQL> select trunc(to_date('05-01-2005 10:13:12 PM','mm/dd/yyyy hh:mi:ss AM'),'mi') from dual;TRUNC(TO_DATE('05-0
    -------------------
    2005-05-01 22:13:00SQL> select trunc(to_date('05-01-2005 12:13:12 PM','mm/dd/yyyy hh:mi:ss AM'),'mi') from dual;TRUNC(TO_DATE('05-0
    -------------------
    2005-05-01 12:13:00
      

  4.   

    原来date是字符串型,开始没看到
    to_date(substr(date,1,16),'mm/dd/yyyy hh:mi')+decode(substr(date,17,2),'AM',0,1/2)觉得还是能不改 日期的语言设置 就不改
      

  5.   

    多谢楼上的,不过这怪我没有说明白,传进函数的字符串格式是这样的:
    02  7 2005  1:13AM
    02 17 2005 10:13PM
      

  6.   

    CREATE OR REPLACE  FUNCTION "SYSTEM"."COBVERTTODATE" (
     dateString varchar2
    )
    return date is returnDate
    as
    begin
     select (to_date(substr(date,1,16),'mm/dd/yyyy hh:mi')+decode(substr(date,17,2),'AM',0,1/2)) into returnDate from dual;
     return returnDate;
    end;这个函数对么?怎么编译不过去呢?
      

  7.   

    CREATE OR REPLACE  FUNCTION "SYSTEM"."COBVERTTODATE" (
     dateString varchar2
    )
    return date is returnDate
    as
    begin
     select (to_date(substr(dateString,1,16),'mm/dd/yyyy hh:mi')+decode(substr(dateString,17,2),'AM',0,1/2)) into returnDate from dual;
     return returnDate;
    end;上面的代码贴错了
      

  8.   

    这样呢?
    CREATE OR REPLACE  FUNCTION "SYSTEM"."COBVERTTODATE" (
     dateString varchar2
    )
    return date 
    is
    returnDate date;
    begin
     select (to_date(substr(dateString,1,16),'mm/dd/yyyy hh:mi')+decode(substr(dateString,17,2),'AM',0,1/2)) into returnDate from dual;
     return returnDate;
    end;
      

  9.   

    这回明白了
    CREATE OR REPLACE  FUNCTION "SYSTEM"."COBVERTTODATE" (
     dateString varchar2
    )
    return date
    as
    returnDate date;
    begin
     select (to_date(substr(dateString,1,16),'mm/dd/yyyy hh:mi')+decode(substr(dateString,17,2),'AM',0,1/2)) into returnDate from dual;
     return returnDate;
    end;可是怎么调用呢?
      

  10.   

    waterfirer(水清)的方法对于12:00 AM的处理有问题,会转换为中午12点,而不是午夜0点。
    如果字符串是02  7 2005  1:13AM,可以只用to_date就可以了。
    select to_date('02  7 2005  1:13AM','mm/dd/yyyy hh:miAM') from dual;
      

  11.   

    bobfang(匆匆过客)说的对,在12:00 AM处会出现问题。
    在decode处需要处理一下,
    decode(substr(date,17,2),'AM',decode(substr(date,12,2),'12',-1/2,0),decode(substr(date,12,2),'12',0,1/2))