--这是两个函数!可以传一个日期到数据库中根据这两个函数比较得到本周一的日期和周日的日期!。
-- 取得参数日期所在周的第一天
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