我的数据库中有一个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日期格式。有什么想法吗?
答案 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