表A  name ,start_date(开始时间),end_date(结束时间)   
举个例子:name  start_date(开始时间)end_date(结束时间)  
xiaoa      2009-10-1           2020-9-1
xiaob      2010-3-2            2010-4-2
xiaoc      2011-11-2           2011-12-9表B tName ,re_datetName              re_date
xiaoc              2011-9-16
xiaob              2011-9-16
xiaoa              2011-9-16sql="..... where to_char(re_date,'yyyy-mm-dd')='2011-9-16'";
给 表B的 re_date 赋值为 2011-9-16  
要查询出来的结果:xiaoa,xiaob 
re_date 值为 2011-9-16 时没在xiaoc的范围内

解决方案 »

  1.   

    select t1.name, t1.start_date, t1.end_date
    from a t1
    where exists (select 1 from b t2 
                   where t2.tName=t1.name
                     and t2.re_date>=t1.start_date
                     and t2.re_date<=t1.end_date );
      

  2.   


    我sql也是你写那个形式但是没结果啊,而且条件也不对,加上条件后就没结果了
     to_char(re_date,'yyyy-mm-dd')=‘2011-9-16’
      

  3.   

    与to_char()的结果格式有关,楼主可以试下把这个条件改成
    to_char(re_date, 'yyyy-mm-dd') = '2011-09-16'
      

  4.   

    表B中的所有人名在表A中都可以找到给表B中re_date赋值‘2011-9-16’,用re_date 去A表中判断它是否在时间范围内当re_date的值为‘2011-9-16’时有可能查到多条数据,要对每一条数据都要判断它是否在表A对应的时间范围内