簡體   English   中英

Oracle:日期格式

[英]Oracle: Date format

我正在嘗試連接一個日期和一個VARCHAR2的時間,然后將其傳遞給一個DATE 問題是當我將它傳遞給DATE時,它不會在date格式上打印日期時間。 我究竟做錯了什么?

  o_data_final DATE;
  i_data       VARCHAR2:= '12/06/2000';
  i_hora       VARCHAR2:= '12:23:00';

  dbms_output.put_line('print:'||concat(concat(i_data,' '),i_hora));
  --prints correctly: 12/06/2000 12:23:00

  SELECT to_date(concat(concat(i_data,' '),i_hora), 'dd/mm/yyyy hh24:mi:ss')
  INTO o_data_final
  FROM dual;

  dbms_output.put_line('data:'||to_char(o_data_final));
  --prints wrong: 00.06.12

我希望 o_data_final 是 12/06/2000 12:23:00。 謝謝。

然后您需要將格式傳遞到 TO_CHAR function 中,例如:

dbms_output.put_line('data:'||to_char(o_data_final, 'dd/mm/yyyy hh:mi:ss'));

Oracle 以內部二進制格式存儲日期,它沒有特定的人類可讀格式。 您將需要在TO_CHAR中使用格式或使用NLS_DATE_FORMAT為 session 設置默認格式。

alter session set NLS_DATE_FORMAT = 'dd/mm/yyyy hh:mi:ss';

目前,您正在獲得 output: 00.06.12因為當前您的NLS_DATE_FORMAT設置為yy.mm.dd

您可以使用以下查詢獲取NLS_DATE_FORMAT的當前 session 值:

SELECT
    *
FROM
    NLS_SESSION_PARAMETERS
WHERE
    PARAMETER = 'NLS_DATE_FORMAT';

干杯!!

請嘗試:

  declare 
  o_data_final DATE;
  i_data       VARCHAR2(2000):= '12/06/2000';
  i_hora       VARCHAR2(2000):= '12:23:00';
  begin
  dbms_output.put_line('print:'||concat(concat(i_data,' '),i_hora));
  --prints correctly: 12/06/2000 12:23:00

  SELECT to_date(i_data||' '||i_hora, 'dd/mm/yyyy hh24:mi:ss')
  INTO o_data_final
  FROM dual;

  dbms_output.put_line('data:'||to_char(o_data_final, 'dd/mm/yyyy hh24:mi:ss'));
  end;

或者

  declare 
  o_data_final DATE;
  i_data       VARCHAR2(2000):= '12/06/2000';
  i_hora       VARCHAR2(2000):= '12:23:00';
   begin
  dbms_output.put_line('print:'||concat(concat(i_data,' '),i_hora));
  --prints correctly: 12/06/2000 12:23:00

  SELECT to_date(concat(concat(i_data,' '),i_hora), 'dd/mm/yyyy hh24:mi:ss')
  INTO o_data_final
  FROM dual;

  dbms_output.put_line('data:'||to_char(o_data_final, 'dd/mm/yyyy hh24:mi:ss'));
  end;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM