表中有2个字段                 Startdate                Enddate
                           20070101                20070201
                           20070211                20070301
                           20070301                20070225...............一般情况下前一个日期小于后一个日期
现在要求传递2个日期参数值,也就是一个时间段。
具体是表中时间段与给定的查询时间段(参数值)有交集的话满足查询条件。具体SQL怎么写 请赐教 谢

解决方案 »

  1.   


     ( startdate between to_date( :ad_fr_date||' 00:00:00',
                                                                'yyyy-mm-dd hh24:mi:ss' ) and  to_date(:ad_to_date||' 23:59:59',
                                                                'yyyy-mm-dd hh24:mi:ss' ) )OR  
    ( Enddate 
     between to_date(:ad_fr_date||' 00:00:00',
                                                                'yyyy-mm-dd hh24:mi:ss') and  to_date(:ad_to_date||' 23:59:59',
                                                                'yyyy-mm-dd hh24:mi:ss'))or
             ( to_date(:ad_fr_date,'yyyy-mm-dd') between startdate and Enddate 
    ) or ( to_date(:ad_to_date,'yyyy-mm-dd') between startdate and Enddate 
    )
    其中 :ad_fr_date是变量起始时间,:ad_to_date是变量结束时间
      

  2.   

    startday between 查询起始时间 and 查询结束时间
    or
    endday between 查询起始时间 and 查询结束时间
    or 
    查询起始时间 between startday and endday
    or 
    查询结束时间 between startday and endday
      

  3.   

    你的意思是不是:
    时间在 Startdate,Enddate 之间?其中   :ad_fr_date是变量起始时间,:ad_to_date是变量结束时间
    and Startdate<=to_date(ad_fr_date,'yyyymmdd')
    and Enddate>=to_date(ad_to_date,'yyyymmdd')