2016-10-17 83 views
0

我有2列日期(yyymmdd)和時間(hhmmss)的字符串格式。結合日期和時間字段make datetime

dt   time 
----------------- 
20130218 000205 

我想使它到datetime。

使用

to_date(to_char(DT, 'YYYY/MM/DD') || ' ' || 
TO_CHAR(TO_DATE(time,'HH24MISS'),'HH2 4:MI:SS'), 'YYYY/MM/DD HH24:MI:SS') 

,但不工作。

+0

出現錯誤.... – johnnynemonic

+0

錯誤是'未實現的特徵' – user262503

回答

0

試着非常注意什麼是字符串,什麼是日期時間,什麼是什麼,什麼時候以及爲什麼。

在下面的插圖中,date_time是Oracle日期數據類型;它顯示的方式是由於我的會話NLS_DATE_FORMAT設置。 (我可以更改它以顯示時間 - 這一切都取決於NLS_DATE_FORMAT。)在d_t_string中,我將其轉換回字符串,並使用非常特定的格式模型 - 您嘗試使用的模型。

如果您需要此日期存儲在數據庫中,或者用於進一步的計算,請將其保存在日期數據類型中,不要將其轉換回字符串。如果你需要顯示它(如我以下所做的那樣),請將它轉換爲字符串,並使用非常特定的格式模型。

with inputs (dt, time) as (
     select '20130218', '000205' from dual 
    ) 
select dt, time, to_date(dt||time, 'yyyymmddhh24miss') as date_time, 
     to_char (to_date(dt||time, 'yyyymmddhh24miss') , 'yyyy/mm/dd hh24:mi:ss') 
                     as d_t_string 
from inputs; 


Output: 

DT  TIME DATE_TIME D_T_STRING   
-------- ------ ---------- ------------------- 
20130218 000205 2013-02-18 2013/02/18 00:02:05