将字符串文字转换为日期

时间:2015-10-02 09:21:06

标签: sql oracle oracle11g

我的数据库中有一个varchar2字段,其格式为例如 -

2015-08-19 00:00:01.0
2014-01-11 00:00:01.0
etc.

我正在尝试将其转换为DD-MON-YYYY格式的日期。例如,2015-08-19 00:00:01.0应该成为2015年8月19日。我试过了

 select to_date(upgrade_date, 'YYYY-MM-DD HH24:MI:SS') from connection_report_update

但即使在这一点上,我在转换整个输入字符串之前得到ORA-01830日期格式。有什么想法吗?

3 个答案:

答案 0 :(得分:1)

您的详细信息最多为毫秒,为此,您必须使用TO_TIMESTAMP()格式模型' FF'

select to_timestamp('2015-08-19 00:00:01.0' ,'YYYY-MM-DD HH24:MI:SS.FF') as result from dual;

RESULT
---------------------------------------------------------------------------
19-AUG-15 12.00.01.000000000 AM

并且日期本身没有格式,只有日期输出可以采用格式。因此,当您希望以不同的格式打印时,您需要再次使用已转换时间戳的TO_CHAR();

select to_char(to_timestamp('2015-08-19 00:00:01.0' ,'YYYY-MM-DD HH24:MI:SS.FF'),'DD-MON-YYYY') as result from dual;

RESULT
-----------
19-AUG-2015

答案 1 :(得分:1)

为什么将日期时间存储在字符串中?

总之。来自2015-08-19 00:00:01.0'使用毫秒(在Oracle中为height:100%)的日期时间使用TIMESTAMP

to_timestamp

然后要获得所需的输出格式,请使用to_timestamp('2015-08-19 00:00:01.0', 'yyyy-mm-dd hh24:mi:ss.ff')

to_char

合:

to_char(thedate, 'DD-MON-YYYY')

答案 2 :(得分:-1)

您应该在调用to_date时指定所需的格式而不是当前格式:

select to_date(upgrade_date, 'DD-MM-YYYY') from connection_report_update