我试图在SYSDATE
和我的一个表中的一列之间获得天数,而不使用TRUNC,因为我需要将时间戳记包括在减法中。
我正在尝试实现与下面的代码相似的东西,但不使用TRUNC
select * from table_name where trunc(sysdate) - trunc(column_name) > 60;
请注意,column_name
是时间戳而不是日期。
答案 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