SQL如何算出2013年所有的周六和周日?
SQL语句  如何算出2013年所有的周六和周日? 
              
                  sql??周末
              
------解决方案--------------------USE test
GO
DECLARE @DateFirst TINYINT
SELECT @DateFirst=@@DATEFIRST
SET DATEFIRST 1
SELECT 
		Date
		,DATENAME(weekday,Date) AS Weekday
	FROM (
		SELECT
				DATEADD(dd,number,'20130101') AS Date
			FROM master.dbo.spt_values
			WHERE DATEADD(dd,number,'20130101') BETWEEN '20130101' AND '20131231'
				AND type='P'
	) AS t
	WHERE DATEPART(weekday,Date) IN(6,7)
SET DATEFIRST @DateFirst
/*
Date                    Weekday
----------------------- --------
2013-01-05 00:00:00.000 星期六
2013-01-06 00:00:00.000 星期日
2013-01-12 00:00:00.000 星期六
2013-01-13 00:00:00.000 星期日
2013-01-19 00:00:00.000 星期六
2013-01-20 00:00:00.000 星期日
2013-01-26 00:00:00.000 星期六
2013-01-27 00:00:00.000 星期日
...
2013-12-21 00:00:00.000 星期六
2013-12-22 00:00:00.000 星期日
2013-12-28 00:00:00.000 星期六
2013-12-29 00:00:00.000 星期日
*/
------解决方案--------------------declare @sdt date
set @sdt = '2013-01-01'
declare @edt date
set @edt = DATEADD(year,1,@sdt )
declare @dt date
declare @w int
select @w = datepart(WEEKDAY ,@sdt)
if @w = 1
begin
	print convert(varchar(10),@sdt,120) + ' 周日'
end	
set @w = 7 - @w 
set @dt = DATEADD(day,@w,@sdt)
while @dt < @edt
begin
	print convert(varchar(10),@dt,120) + '  周六'
	print convert(varchar(10),dateadd(day,1,@dt),120) + '  周日'
	set @dt = DATEADD(day,7,@dt)
end
------解决方案--------------------create table SatSun([id] int identity(1,1),[date] datetime,[weekday] char(6))
go
declare @datetime datetime,@weekday char(6)
set @datetime='2013-1-1'
while @datetime<='2013-12-31'
begin
select @weekday=datename(weekday,@datetime)
if @weekday= '星期六' insert SatSun([date],[weekday]) values(@datetime,@weekday)
if @weekday='星期日' insert SatSun([date],[weekday]) values(@datetime,'星期天')
select @datetime=dateadd(day,1,@datetime)
end
go
select * from satsun
drop table satsun