我有以下内容:trunc(sysdate - 1) + interval '8' hour
如何在此间隔中增加分钟和几秒钟?
使用HOUR TO SECOND
,而不只是HOUR
:
SELECT TRUNC( SYSDATE - 1 ) + INTERVAL '8:12:34' HOUR TO SECOND
FROM DUAL;
输出:
| TRUNC(SYSDATE-1)+ INTERVAL'8:12:34'HOURTOSECOND || :--------------------------------------------- || 2020-06-08 08:12:34 |
db <>小提琴here
您可以尝试这样的事情:
select cast(trunc(sysdate - 1) as timestamp) + interval '8' hour + interval '40' minute + interval '20' second from dual;
您当前正在使用sysdate。在上面的示例中,我将其切换为时间戳。然后,添加8小时。然后,添加分钟和秒钟。
示例:https://dbfiddle.uk/?rdbms=oracle_18&fiddle=76a640ecfb4b59cfbac628511d2accd3
有时,使用老式方法会更容易:
select trunc(sysdate - 1) + (8 / 24 + 30 / (24 * 60) + 5 / (24 * 60 * 60))
或使用一个间隔和一种算术表达它:
trunc(sysdate - 1) + (8 * 60 * 60 + 30 * 60 + 17) * interval '1' second
有复合间隔的语法;我发现很难记住Oracle的版本。