TO_DATE函数可以返回TIMESTAMP吗?

时间:2019-07-11 15:24:57

标签: sql oracle date timestamp to-date

任何形式的TO_DATE函数都可以返回TIMESTAMP吗?示例:

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

我尝试过:

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

但是它返回:

31/05/2019

4 个答案:

答案 0 :(得分:2)

to_date返回一个date。如果您需要timestamp,则应使用to_timestamp

答案 1 :(得分:1)

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

答案 2 :(得分:1)

如果您只想显示一个时间戳值,则保留style1,否则,如果您希望转换为截短的datetime类型值,则使用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

答案 3 :(得分:0)

您可以使用castdatetimestamp之间进行转换。

但是我不确定您的起始数据类型是什么,或者为什么特别需要to_date()来返回时间戳。