如何在Oracle中不使用TRUNC获取天数

sam*_*amg 1 sql database oracle

我试图SYSDATE在不使用TRUNC的情况下获取其中一个表中的列和天数之间的天数,因为我需要将时间戳包含在减法中.

我试图实现类似于下面的代码,但不使用TRUNC

select * from table_name where trunc(sysdate) - trunc(column_name) > 60;
Run Code Online (Sandbox Code Playgroud)

请注意,column_name时间戳不是日期.

APC*_*APC 5

使用INTERVAL数据类型定义间隔.to_dsinterval()将格式为"DD HH24:MI:SS"的字符串转换为间隔,在这种情况下恰好为60天:

select * from table_name 
where column_name < sysdate - to_dsinterval('60 0:0:0');
Run Code Online (Sandbox Code Playgroud)

  • @samg - 你可以做`sysdate - numtodsinterval(60,'day')`或`sysdate - 60*interval'1'day`,然后可以用变量替换60.(虽然我可能只使用`systimestamp`而不是`sysdate`来使数据类型匹配 - 但隐式转换无论如何都会处理它.) (2认同)