TO_DATE 可以使用 return 时间戳吗?

Can TO_DATE function return a TIMESTAMP?

可以以任何形式 TO_DATE 函数 return 和 TIMESTAMP 吗?示例:

我有以下输入:'2019-05-31 13:15:25.000000000' 我想使用 TO_DATE 而不是 TO_TIMESTAMP.

结果是 '2019-05-31 13:15:25'

我试过了:

select to_date(substr('2019-05-31 13:15:25.000000000', 1, 19), 'YYYY-MM-DD HH24:MI:SS') from dual;

但是它 returns:

31/05/2019

to_datereturns一个date。如果你需要 timestamp,你应该使用 to_timestamp

TO_DATE 用于读取您在查询中使用的日期格式 YYYY-MM-DD HH24:MI:SS

     to_date(substr('2019-05-31 
    13:15:25.000000000', 1, 19), 'YYYY-. 
     MM-DD HH24:MI:SS') from dual

并提供默认日期格式而不是数据库的默认时间戳格式,以便您可以使用 TO_CHAR(to_date(substr('2019-05-31 13:15:25.000000000', 1, 19), 'YYYY-. MM-DD HH24:MI:SS'),"your_format") from dual

来操纵日期

或使用 to_timestamp(...)

如果您只想这样显示时间戳值,请保留 style1,否则如果您希望转换为截断的日期时间类型值,请使用 style2,如下所示:

with t( ts ) as
(
 select systimestamp from dual
)
select to_char(ts,'YYYY-MM-DD HH24:MI:SS') as style1,
       to_timestamp(to_char(ts,'YYYY-MM-DD HH24:MI:SS'),'YYYY-MM-DD HH24:MI:SS') as style2,
       ts as original
  from t;

STYLE1              STYLE2                           ORIGINAL
------------------- -------------------------------  -----------------------------------
2019-07-11 17:03:15 11-JUL-19 05.03.15.000000000 PM  11-JUL-19 05.03.15.298742 PM +01:00

您使用 castdatetimestamp 值之间转换。

但是我不确定您的起始数据类型是什么,或者为什么您需要 to_date() 专门用于 return 时间戳。