晕,早上回帖,怎么都看不大懂搂主的意思。汗
select col_a,col_b from t where t.col_b<to_date('2006-06-01') or t.col_b>to_date('2006-06-02')
不知道是不是你要的

解决方案 »

  1.   

    我想楼主的意思肯定是在数据库里面有两个字段分别放着月把重复份和日期两个数据就象6/1一样然后想把同一天重复的数据不要显示是吧,可以将两个字段的值连起来比较啊62肯定大于61啊,然后DISTINCT了查询出来的数据啊
      

  2.   

    假设你的两个字段是 dateA dateB
    传入的值是 testA testB那么,二者有交集的情况可以如下表示:where (testA between dateA and dateB) or (testB between dateA and dateB)你现在需要的是没有交集的,那就取反即可where not ((testA between dateA and dateB) or (testB between dateA and dateB))
      

  3.   

    那么,二者有交集的情况可以如下表示:
    where (testA between dateA and dateB) or (testB between dateA and dateB)
    --------------
    这样是不对的,举个例子:
    dateA:6-1
    dateB:6-2
    testA:5-1
    testB:7-1
    如上,testA,testB和dateA,dateB显然是有交集的,但按上面条件是查不到的
    没有交集可以这样来查:
    dateBegin,dateEnd为字段,datemin,datemax为传值
    select * from tablename where dateEnd<datemin or dateBegin>datemax
      

  4.   

    呵呵,(水清)说的对,我只考虑了传入的值比已有字段范围小的情况,丢掉了一种可能:(dateA between testA and testB) and (dateB between testA and testB)-------------------------------------------------------------------------于是,最终结果如下:假设你的两个字段是 dateA dateB
    传入的值是 testA testB那么,二者有交集的情况可以如下表示:where (testA between dateA and dateB) or (testB between dateA and dateB)
    or ((dateA between testA and testB) and (dateB between testA and testB))你现在需要的是没有交集的,那就取反即可where not ( (testA between dateA and dateB) or (testB between dateA and dateB)
    or ((dateA between testA and testB) and (dateB between testA and testB)) )自己测试一下看吧
      

  5.   

    ------------
    没有交集可以这样来查:
    dateBegin,dateEnd为字段,datemin,datemax为传值
    select * from tablename where dateEnd<datemin or dateBegin>datemax
    ------------这样就要求传入的值必须事先明确大小关系,如果用存储过程来做还行