/*--
得到两个日期之间的日期列表
--调用示例
select * from dbo.f_getdate('2003-01-01','2003-01-20')
*/if exists(select 1 from sysobjects where id=object_id('f_getdate') and objectproperty(id,'IsInlineFunction')=0)
drop function f_getdatego
create function f_getdate(@dt1 datetime,@dt2 datetime)
returns @re table(id int identity(0,1),dt datetime)
as
begin
declare @i int
select @i=datediff(day,@dt1,@dt2)+1
while @i>1
begin
insert into @re(dt) select top 100 @dt1 from syscolumns
set @i=@i-100
end
delete from @re where id>datediff(day,@dt1,@dt2)
update @re set dt=dateadd(day,id,dt)
return
end
go
http://expert.csdn.net/Expert/TopicView1.asp?id=2607995
select id+1,dt,datename(weekday,dt),datename(month,dt),year(dt),day(dt),month(dt),'Q1',null
from dbo.f_getdate('1997-01-01','1998-01-01')