日期时间到Varchar2转换

时间:2016-03-09 11:07:45

标签: datetime plsql

我的一张桌子的日期值是2016-02-15T18:30:00.000Z,我需要显示与15/2/2016 6:30:00 PM相同的值。

我正在尝试使用TO_CHAR,如下所示:

a:=2016-02-15T18:30:00.000Z
b:= TO_CHAR(a, 'MM/D/YYYY HH12:MI:SS AM');

但它根本不起作用。

3 个答案:

答案 0 :(得分:0)

您对a的分配在PL / SQL中无效。试试这个:

<body>

我对以下评论中的代码进行了改进:

declare
   a date;
   b varchar2(20);
begin
   a:= timestamp '2016-02-15 18:30:00.000';
   b:= TO_CHAR(a, 'MM/D/YYYY HH12:MI:SS AM');
   dbms_output.put_Line(b);
end;

答案 1 :(得分:0)

  

根据您的要求,此日期格式无法识别   甲骨文。你需要调整输入,以便oracle识别它。希望   下面的片段可以帮助你。

  SET SERVEROUTPUT ON;
DECLARE
  lv_input VARCHAR2(100):='2016-02-15T18:30:00.000Z';
  lv_date  TIMESTAMP;
  lv_out_req VARCHAR2(100 CHAR);
BEGIN
  SELECT TO_TIMESTAMP(REPLACE(REPLACE(lv_input,'T',' '),'Z',''),'YYYY-MM-DD HH24:MI:SS.FF6')
  INTO lv_date
  FROM DUAL;
  dbms_output.put_line('Input varchar '||lv_input||' --> '||lv_date);
  lv_out_req:=to_char(lv_date,'mm/dd/yyyy hh24:mi:ss');
  dbms_output.put_line('Out formated varchar '||lv_out_req);
END;

---------------------------------OUTPUT--------------------------------------
PL/SQL procedure successfully completed.

Input varchar 2016-02-15T18:30:00.000Z --> 02/15/2016 18:30:00.000000
Out formated varchar 02/15/2016 18:30:00

---------------------------------------------------------------------------

答案 2 :(得分:0)

尝试在Oracle中这样做:

select to_char(to_timestamp('2016-02-15T18:30:00.000Z','YYYY-MM DD"T"HH24:MI:SS.ff3"Z"'),'DD/MM/YYYY HH24:MI:SS AM') from dual