Copy Code code as follows:
if exists (SELECT * from dbo.sysobjects WHERE id = object_id (N ' [dbo].[ F_getdate] and Xtype in (n ' FN ', n ' IF ', n ' TF '))
Drop function [dbo]. [F_getdate]
Go
Create function [dbo]. [F_getdate]
(
@year int,-the year to query
@bz bit--@bz = 0 query workdays, @bz = 1 query rest day, @bz is NULL query full date
)
RETURNS @re TABLE (Date datetime,weekday nvarchar (3))
As
Begin
DECLARE @tb TABLE (ID int, Date datetime)
Insert @tb Select number,
DATEADD (Day,number,dateadd (year, @YEAR-1900, ' 1900-1-1 '))
From Master.. Spt_values where type= ' P ' and number between 0 and 366
DELETE from @tb WHERE date>dateadd (year, @YEAR-1900, ' 1900-12-31 ')
IF @bz =0
INSERT into @re (date,weekday)
SELECT Date,datename (weekday,date)
From @tb
WHERE (DATEPART (weekday,date) +@ @DATEFIRST-1)%7 BETWEEN 1 and 5
ELSE IF @bz =1
INSERT into @re (date,weekday)
SELECT Date,datename (weekday,date)
From @tb
WHERE (DATEPART (weekday,date) +@ @DATEFIRST-1)%7 in (0,6)
ELSE
INSERT into @re (date,weekday)
SELECT Date,datename (weekday,date)
From @tb
Return
End
Go
SELECT * FROM dbo. [F_getdate] (' 2009 ', 0)