[英]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.