甲骨文将char转换为日期

甲骨文将char转换为日期

问题描述:

我在Oracle表以下日期:甲骨文将char转换为日期

“2017年8月1日00:00:00,000000000”

我想将其转换为日期,我现在用的以下,但我不知道如何处理zeroes?!

. 
. 
. 
T.EXECUTION_LOCAL_DATE_TIME 
between to_date('2017-08-01 00:00:00,000000000', 'yyyy-mm-dd hh:mi:ss') 
and to_date('2017-08-10 00:00:00,000000000', 'yyyy-mm-dd hh:mi:ss'); 

任何人都可以帮助我吗?

Oracle日期不支持毫秒。假设你EXECUTION_LOCAL_DATE_TIME列是一个日期,然后下面的比较是最好的,你可以这样做:

T.EXECUTION_LOCAL_DATE_TIME 
BETWEEN TO_DATE('2017-08-01 00:00:00', 'yyyy-mm-dd hh:mi:ss') AND 
     TO_DATE('2017-08-10 00:00:00', 'yyyy-mm-dd hh:mi:ss'); 

如果你想为一个文本字符串毫秒转换为一个时间戳,您可以使用这样的事情:

TO_TIMESTAMP ('2017-08-01 00:00:00,000000000', 'yyyy-mm-dd hh:mi:ss,ff') 
+0

','vs'.''分隔符在您的to_timestamp – JohnHC

+0

谢谢,它现在可以工作。 –

一般在没有一个日期而言这个值,而是一个时间戳,所以我会用下面的转换:

select to_timestamp('2017-08-01 00:00:00,000000000', 'yyyy-mm-dd hh24:mi:ss,ff6') 
from dual; 

从技术上讲,你可以有后无零逗号,所以如果你想得到正确的但不被截断的值使用时间戳日期类型。