如何在Oracle中不使用TRUNC的情况下获得天数

时间:2019-02-18 17:08:00

标签: sql database oracle

我试图在SYSDATE和我的一个表中的一列之间获得天数,而不使用TRUNC,因为我需要将时间戳记包括在减法中。

我正在尝试实现与下面的代码相似的东西,但不使用TRUNC

select * from table_name where trunc(sysdate) - trunc(column_name) > 60;

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

3 个答案:

答案 0 :(得分:5)

使用INTERVAL数据类型定义间隔。 to_dsinterval()将格式为“ DD HH24:MI:SS”的字符串转换为一个间隔,在这种情况下,该间隔恰好是六十天:

select * from table_name 
where column_name < sysdate - to_dsinterval('60 0:0:0');

答案 1 :(得分:3)

您可以使用:

select * from table_name where column_name <= sysdate - 60;

或:

SELECT * FROM table_name WHERE column_name < sysdate - interval '60' day;

答案 2 :(得分:1)

您为什么不尝试select req_columns from MyTable where sysdate - column > 60

您可以在下面的查询中尝试是否该列之一是时间戳。

select * from Mytable where sysdate - to_date(to_char(colTimeStamp, 'YYYY-MON-DD HH24:MI:SS'), 'YYYY-MON-DD HH24:MI:SS') > 60