create proc p
@year int
as
    declare @BY datetime
    declare @bt datetime
    declare @et datetime
    declare @EY datetime
    declare @id int
    create table wk(id int identity(1,1),des nvarchar(200))
    set @id=1
    set datefirst 1
    set @BY=cast(@year as nvarchar(4))+'01'+'01'
    set @EY=cast(@year as nvarchar(4))+'12'+'31'
    set @bt=@BY
    set @bt=dateadd(d,7-datepart(weekday,@bt)+1,@bt)
    set @et=dateadd(d,4,@bt)
    insert into wk 
    select '第'+cast(@id as nvarchar(2))+'周('+replace(convert(char(10),@bt,120),'-','.')+'-'+replace(convert(char(10),@et,120),'-','.')+')'
    set @bt=dateadd(d,7,@bt)
    --/*
    while datediff(d,@bt,@EY)>0
      begin
        set @bt=@et
        set @et=dateadd(d,4,@et)
        set @id=@id+1
        insert into wk 
        select '第'+cast(@id as nvarchar(2))+'周('+replace(convert(char(10),@bt,120),'-','.')+'-'+replace(convert(char(10),@et,120),'-','.')+')'
        set @bt=dateadd(d,7,@bt)
      end
    --*/
    select * from wk
    drop table wk
goexec p '2005'drop proc p