在数据库中进行星期的日期判断的函数的写法

 

--这是两个函数!可以传一个日期到数据库中根据这两个函数比较得到本周一的日期和周日的日期!。

-- 取得参数日期所在周的第一天
CREATE FUNCTION [dbo].[uf_GetFirstdayOfWeek](
@dt datetime,
@firstday int = 1  --将一周的第一天设置为从1 到7 之间的一个数字
/*--
 值  一周的第一天是
 1   星期一
 2   星期二
 3   星期三
 4   星期四
 5   星期五
 6   星期六
 7  星期日
--*/
)RETURNS nvarchar(10)
AS
BEGIN
 DECLARE @str nvarchar(10)
 SELECT @str = CONVERT(nvarchar(10),
      DATEADD(day,
       CASE @firstday
        WHEN 1 THEN -(DATEPART(Weekday,@dt) + @@DATEFIRST - 2)%7
        WHEN 2 THEN -(DATEPART(Weekday,@dt) + @@DATEFIRST - 3)%7
        WHEN 3 THEN -(DATEPART(Weekday,@dt) + @@DATEFIRST - 4)%7
        WHEN 4 THEN -(DATEPART(Weekday,@dt) + @@DATEFIRST - 5)%7
        WHEN 5 THEN -(DATEPART(Weekday,@dt) + @@DATEFIRST - 6)%7
        WHEN 6 THEN -(DATEPART(Weekday,@dt) + @@DATEFIRST - 7)%7
        WHEN 7 THEN -(DATEPART(Weekday,@dt) + @@DATEFIRST - 1)%7
        END,
       @dt),
      126)
 RETURN @str
END
GO


-- 取得参数日期所在周的最后一天
CREATE FUNCTION [dbo].[uf_GetLastdayOfWeek](
@dt datetime,
@firstday int = 1  --将一周的第一天设置为从1 到7 之间的一个数字
/*--
 值  一周的第一天是
 1   星期一
 2   星期二
 3   星期三
 4   星期四
 5   星期五
 6   星期六
 7  星期日
--*/
)RETURNS nvarchar(10)
AS
BEGIN
 DECLARE @str nvarchar(10)
 SELECT @str = CONVERT(nvarchar(10),
      DATEADD(day,
       CASE @firstday
        WHEN 1 THEN (DATEPART(Weekday,@dt) + @@DATEFIRST + 7)%7
        WHEN 2 THEN (DATEPART(Weekday,@dt) + @@DATEFIRST + 1)%7
        WHEN 3 THEN (DATEPART(Weekday,@dt) + @@DATEFIRST + 2)%7
        WHEN 4 THEN (DATEPART(Weekday,@dt) + @@DATEFIRST + 3)%7
        WHEN 5 THEN (DATEPART(Weekday,@dt) + @@DATEFIRST + 4)%7
        WHEN 6 THEN (DATEPART(Weekday,@dt) + @@DATEFIRST + 5)%7
        WHEN 7 THEN (DATEPART(Weekday,@dt) + @@DATEFIRST + 6)%7
        END,
       @dt),
      126)
 RETURN @str
END
GO

posted @ 2008-08-30 22:40  戴着脚镣跳舞  阅读(588)  评论(0编辑  收藏  举报