我在PL-SQL中有一个查询。我想选择记录,其中当前的日期差异超过一天和其他一些条件......
select round(sysdate - u.RecordDate) as deleteme,
round(sysdate - u.Payment_date) as payment,
nvl(isverified, 0) as Verified
from user_cards u
where ((round(sysdate - u.RecordDate) > 0) || (round(sysdate - u.Payment_date) > 0))
and nvl(isverified, 0) = 0
order by id desc
但此处存在问题 where ((round(sysdate - u.RecordDate) > 0) || (round(sysdate - u.Payment_date) > 0))
任何想法如何在日期差异超过一天的情况下获取记录???
答案 0 :(得分:2)
要获得日期差异超过一天的记录,只需减去日期并测试大于1:
sysdate - u.RecordDate > 1
代码:
sysdate - u.RecordDate > 1 OR sysdate - u.Payment_date > 1
更多信息:http://docs.oracle.com/cd/B19306_01/server.102/b14200/sql_elements001.htm#i48042
答案 1 :(得分:0)
我真的不喜欢“日期X与今天的差异超过Y天”的这句话,...人们真的这么说吗?难道你不会说日期X超过Y天前吗?
无论如何,为了能够使用索引,我会选择:
u.RecordDate < sysdate-1 OR u.Payment_date < sysdate-1
如果这是一个普通的工作,那么它可以由一个基于函数的单列索引支持,它有助于以下谓词:
Least(u.RecordDate,u.Payment_date) < sysdate-1