2016-10-17 85 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