set nocount on</p><p>declare @st datetime,@et datetime,@i int,@type int --0 全部日期,1 僅工作日,2 僅周末,3 僅星期天</p><p>declare @t table(節假日日期 datetime,節假日名稱 varchar(20))</p><p>select @st='2008-01-01',@et='2009-12-31',@i=0,@type=3</p><p>while @i<= datediff(dd,@st,@et)</p><p>begin </p><p> if @type=0<br /> begin<br /> insert @t select dateadd(dd,@i,@st),datename(w,dateadd(dd,@i,@st))<br /> end</p><p> else if @type=1<br /> begin<br /> insert @t select dateadd(dd,@i,@st),datename(w,dateadd(dd,@i,@st)) where datename(w,dateadd(dd,@i,@st)) not in('星期六','星期日')<br /> end</p><p> else if @type=2<br /> begin<br /> insert @t select dateadd(dd,@i,@st),datename(w,dateadd(dd,@i,@st)) where datename(w,dateadd(dd,@i,@st)) in('星期六','星期日')<br /> end</p><p> else if @type=3<br /> begin<br /> insert @t select dateadd(dd,@i,@st),datename(w,dateadd(dd,@i,@st)) where datename(w,dateadd(dd,@i,@st)) in('星期日')<br /> end</p><p> set @i=@i+1</p><p>end</p><p>set nocount off</p><p>select * from @t