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
如果您只想显示时间戳值,则保留 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
to_date
返回 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(...)