将字符串文字转换为日期
我的数据库中有一个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应该成为19-AUG-2015。 我试过了
 select to_date(upgrade_date, 'YYYY-MM-DD HH24:MI:SS') from connection_report_update
但即使在这一点上,我得到的ORA-01830日期格式在转换整个输入字符串之前结束。 有任何想法吗?
  你有细节高达毫秒,为此,你必须使用格式模型' FF '的TO_TIMESTAMP() 
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
为什么你将日期时间存储在一个字符串中?
  无论如何。  要从“2015-08-19 00:00:01.0”到以毫秒为单位的日期时间(这是Oracle中的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')
一起:
to_char(to_timestamp('2015-08-19 00:00:01.0', 'yyyy-mm-dd hh24:mi:ss.ff'), 'DD-MON-YYYY')
您应该在呼叫to_date时指定所需的格式,而不是当前的格式:
select to_date(upgrade_date, 'DD-MM-YYYY') from connection_report_update
