数据是这样存储的-- 表结构
tableA 
id        int
beginDate datetime
endDate   datetime
type      varchar(50)
-- 存储的数据
1 2011-05-01 2011-06-20 假期A
2 2011-08-20 2011-09-10 假期B
3 2011-09-25 2011-12-02 假期C
question,我想要某个月,某种类型的结果集. (比如假期A类型9月份的结果集,一天为一条记录),或者反过来,某个月内不包括某种假期类型的结果集,
现在的想法是app写一个for循环,按某个月的天数循环,这样太慢,请教如何通过sql 语句查询出来呢?

解决方案 »

  1.   

    DECLARE @dt DATETIME
    SET @dt='2011-09-01'SELECT * FROM tableA WHERE endDate>@dt AND beginDate<DATEADD(m,1,@dt)-1
      

  2.   

    SELECT * FROM tableA WHERE endDate>=指定月的日期 
    or beginDate<=DATEADD(m,1,指定月的日期)
      

  3.   


    樓主要搞清楚什麼是循環??while //goto
      

  4.   

    用between ...and约束时间范围就行了
      

  5.   

    select * from tb where col between @dt and dateadd(mm,1,@dt)
      

  6.   

    http://topic.csdn.net/u/20111209/09/0c195987-fe3b-46e9-8538-cb9270a92d9a.html?1359711204上次 我问的问题,根据第一个语句就可以得到结果了