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

本文介绍两个SQL Server函数,用于根据输入日期获取所在周的开始和结束日期。通过设置参数可选择周第一天的不同定义。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 

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

-- 取得参数日期所在周的第一天
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

转载于:https://www.cnblogs.com/beihoudetiantang/archive/2008/08/30/1280347.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值