我有以下几点: trunc(sysdate - 1) + interval '8' hour 我怎样才能在这个时间间隔上加上分和秒呢?
trunc(sysdate - 1) + interval '8' hour
of1yzvn41#
使用 HOUR TO SECOND 而不仅仅是 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<>在这里摆弄
qhhrdooz2#
您可以尝试以下方法:
select cast(trunc(sysdate - 1) as timestamp) + interval '8' hour + interval '40' minute + interval '20' second from dual;
您当前正在使用sysdate。在上面的例子中,我将其转换为timestamp。然后,再加上8小时。然后,加上分和秒。例子:https://dbfiddle.uk/?rdbms=oracle_18&fiddle=76a640ecfb4b59cfbac628511d2accd3
3okqufwl3#
有时,更容易采用老式方法:
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
复合区间有一个语法;我发现甲骨文的版本很难记住。
3条答案
按热度按时间of1yzvn41#
使用
HOUR TO SECOND
而不仅仅是HOUR
:输出:
db<>在这里摆弄
qhhrdooz2#
您可以尝试以下方法:
您当前正在使用sysdate。在上面的例子中,我将其转换为timestamp。然后,再加上8小时。然后,加上分和秒。
例子:https://dbfiddle.uk/?rdbms=oracle_18&fiddle=76a640ecfb4b59cfbac628511d2accd3
3okqufwl3#
有时,更容易采用老式方法:
或者用一个区间和算术来表示:
复合区间有一个语法;我发现甲骨文的版本很难记住。