select * from table where EMPNO='123'
and TO_DATE('08-Dec-2015','DD-MON-YYYY') between EFF_FROM_DATE and EFF_TO_DATE ;
我有两行数据:
EFF_FROM_DATE EFF_TO_DATE
25-OCT-2015 15:45:19 08-DEC-2015 09:22:17
08-DEC-2015 09:22:17 31-DEC-9999 00:00:00
但此查询仅为 -
获取数据25-OCT-2015 15:45:19 08-DEC-2015 09:22:17
我在这个查询中做错了什么?
答案 0 :(得分:1)
您可能打算这样做:
select *
from table
where EMPNO = '123' and
DATE '2015-12-08' >= trunc(EFF_FROM_DATE) and
DATE '2015-12-08' < trunc(EFF_TO_DATE) + interval '1' day;
问题是时间组件会影响比较。 “发件人”日期有一个时间组件,因此date '2015-12-08'
小于'2015-12-08 10:09:22'
。因此原始逻辑不起作用。
答案 1 :(得分:0)
我认为你需要截断列EFF_FROM_DATE和EFF_TO_DATE。像这样的东西:
contact[count ++] = *con;