将字符串文字转换为日期
我的数据库中有一个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
链接地址: http://www.djcxy.com/p/36957.html