数据库里有个表,其中有3个字段,id,dateStart,dateEnd
现在需要用一个时间段(date1,date2)和表中的所有记录进行比较,返回这个时间段与表中时间段相交的记录集。
例如:date1>dateStatr and date2 <dateEnd 或者 date1<dateStatr and date2 >dateStart 或者 date1<dateEnd and date2 >dateEnd 或者 date1<dateStart and date2 >dateEnd都属于相交的情况,请问sql语句该如何写呢?谢谢!

解决方案 »

  1.   

    既然楼主都已经分析清楚了,那就在 where 子句中用 or 把所有条件关联起来。
      

  2.   

    select * from tb
    where 条件1 or 条件2 or 条件3 or 条件4没看有没有重复的,是否可以省略哪个
      

  3.   

    wzy_love_sly 你是不是女的啊?
      

  4.   

    select * from tb1 where not exists (
        select * from tb where date2<dateStar or date1>dateEnd)可以吗?
      

  5.   

    我不会sql子句查询,所以才来问的,可你们大家就算对我的问题持之以鼻,那也聊点与主题相关的东西吧。郁闷!
      

  6.   

    select * from 表
    where date1 > dateStatr and date2 < dateEnd 
    or date1 < dateStatr and date2 > dateStart 
    or date1 < dateEnd and date2 > dateEnd 
    or date1 < dateStart and date2 > dateEnd
      

  7.   

    or和and哪个优先级高?这样写会不会有问题啊,谢谢!
      

  8.   


    select * from table
    where date1 between dateStart and dateEnd
    or date2 between dateStart and dateEnd
    or (date1<=dateStart and date2>=dateEnd)