我有一张表xx_asg:
Effective_start_date Effective_end_date Person_number
03-jan-2016 31-DEC-4712 12
20-Feb-2015 02-Jan-2016 12
28-Mar-2015 31-Dec-4712 10
07-dec-2016 31-Dec-4712 9
如果我写:
select * from xx_asg
where trunc(sysdate) between effective_start_date and effective_end_date;
这给了我这张表中的所有最新记录。
现在如果我写:
select * from xx_asg
where trunc(sysdate) - 7 between effective_start_date and effective_end_date;
这使我的记录从2016年12月1日起生效。此查询不会返回person_number 9的任何详细信息,因为其生效时间为2016年12月7日,而不是2016年12月1日。
我可以在查询中更改以获取从01-DEC-2016 / sysdate生效的所有记录 - 直到今天或2016年12月7日
答案 0 :(得分:0)
尝试
select *
from xx_asg
where effective_start_date <= trunc(sysdate)
and effective_end_date >= trunc(sysdate - 7);