将字符串文字转换为日期

我的数据库中有一个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

上一篇: convert string literal to a date

下一篇: PHP Oracle convert date to mm/dd/yyyy from yyyy