Oracle 将字符转换为日期

Oracle Convert Char to Date

我在 oracle table 中有以下日期:

'2017-08-01 00:00:00,000000000'

我想将其转换为我正在使用的日期,但我不知道如何处理零?!

.
.
.
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')

一般来说,这个值不是日期而是时间戳,所以我会使用以下转换:

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

从技术上讲,逗号后可以有非零,因此如果您想获得正确但不被截断的值,请使用时间戳日期类型。