给出一个日期范围 例如'2007-7-1'至'2007-8-30'
我想得到以14天为间隔的日期段,想得到的结果如下:时间        间隔  
2007-7-1   0
2007-7-15  1
2007-7-29  2
2007-8-12  3
2007-8-26  4请各位大侠指教

解决方案 »

  1.   

    create table tb(时间 datetime)
    insert into tb values('2007-7-1') 
    insert into tb values('2007-7-15') 
    insert into tb values('2007-7-29') 
    insert into tb values('2007-8-12') 
    insert into tb values('2007-8-26') 
    goselect a.时间 , 间隔 = datediff(day,(select min(时间) from tb),a.时间)/14 from tb adrop table tb/*
    时间                                                           间隔          
    ------------------------------------------------------ ----------- 
    2007-07-01 00:00:00.000                                0
    2007-07-15 00:00:00.000                                1
    2007-07-29 00:00:00.000                                2
    2007-08-12 00:00:00.000                                3
    2007-08-26 00:00:00.000                                4(所影响的行数为 5 行)
    */
      

  2.   

    create table  table1(date1 datetime,div int)declare @i int
    set @i=0
    while (datediff(dd,dateadd(dd,14*@i,'2007-07-01'),'2007-08-30')>=0)
    begin
    insert into table1
    select dateadd(dd,14*@i,'2007-07-01'),@i 

    set @i=@i+1
    endselect * from table1drop table table1
      

  3.   

    dawugui的意思我明白了,可我的开始时间跟结束时间是随机设定的,需要变动,所以取最小时间不合适
      

  4.   

    select 时间 , 间隔 = datediff(day,开始时间,时间)/14 from tb where 时间 between 开始时间 and 结束时间
      

  5.   

    我是想随意给出时间范围 得到完整的时间间隔 像kuangdp那样的结果
    如果tb表中的时间缺少某个时间范围内的 那结果肯定不全了
      

  6.   

    declare @D1 datetime,@D2 datetime
    select @D1='2007-7-1',@D2='2007-8-30'declare @N int,@Seed int
    select @N=datediff(day,@D1,@D2)/14+1,@Seed=datediff(day,0,@D1)exec
    ('
    select top '+@N+' iniDate=identity(int,0,14) into # from syscolumns,sysobjects
    select 时间=cast(iniDate+'+@Seed+' as datetime),间隔=iniDate/14 from #
    ')/*
    时间                                                     间隔          
    ------------------------------------------------------ ----------- 
    2007-07-01 00:00:00.000                                0
    2007-07-15 00:00:00.000                                1
    2007-07-29 00:00:00.000                                2
    2007-08-12 00:00:00.000                                3
    2007-08-26 00:00:00.000                                4
    */
      

  7.   

    请问11楼为什么是from syscolumns,sysobjects?
      

  8.   

    需要一个足够大的源以使top N肯定能返回足够的行,是吧?
    挺巧妙的
      

  9.   

    declare @bdate datetime,@edate datetime,@i int
    select @bdate='2007-7-1',@edate='2007-8-31' --分别录入日期的开始与结束
    declare @t table ([date] datetime,no int)
    select @i=0
    while @bdate<@edate
    begin
      insert into @t values(@bdate,@i)
      select @bdate=dateadd(day,14,@bdate),@i=@i+1
    end
    select * from @t