任何形式的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
答案 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)
您可以使用cast
在date
和timestamp
之间进行转换。
但是我不确定您的起始数据类型是什么,或者为什么特别需要to_date()
来返回时间戳。