菜单 学习猿地 - LMONKEY

VIP

开通学习猿地VIP

尊享10项VIP特权 持续新增

知识通关挑战

打卡带练!告别无效练习

接私单赚外块

VIP优先接,累计金额超百万

学习猿地私房课免费学

大厂实战课仅对VIP开放

你的一对一导师

每月可免费咨询大牛30次

领取更多软件工程师实用特权

入驻
365
0

每周的第一天日期

原创
05/13 14:22
阅读数 91619

获取某周的第一天日期。
参考下面MS SQL Server代码:

 

CREATE FUNCTION [dbo].[svf_StartOfWeek]
(    
    @Year INT,
    @WK INT
)
RETURNS DATETIME
AS
BEGIN        
    DECLARE @FirstDayOfYear DATETIME = DATEFROMPARTS(@Year, 1, 1);
    DECLARE @IsFirstDayInFirstWeek INT = CASE WHEN (DATEPART(WEEKDAY, @FirstDayOfYear) <= 4) THEN 1 ELSE 0 END;     
    RETURN DATEADD(WEEK, @WK - @IsFirstDayInFirstWeek, DATEADD(DAY, (1 - DATEPART(WEEKDAY, @FirstDayOfYear)), @FirstDayOfYear));
END
Source Code

 
附加:获取某周最后一天:

CREATE FUNCTION [dbo].[svf_EndOfWeek]
(    
    @Year INT,
    @WK INT
)
RETURNS DATETIME
AS
BEGIN        
    DECLARE @FirstDayOfYear DATETIME = DATEFROMPARTS(@Year, 1, 1);
    DECLARE @IsFirstDayInFirstWeek INT = CASE WHEN (DATEPART(WEEKDAY, @FirstDayOfYear) <= 4) THEN 1 ELSE 0 END;     
    RETURN  DATEADD(WEEK, @WK - @IsFirstDayInFirstWeek, DATEADD(DAY, (@@DATEFIRST - DATEPART(WEEKDAY, @FirstDayOfYear)), @FirstDayOfYear));
END
GO
Source Code

 

以上2个函数,受到语言环境和@@DATEFIRST值的影响。

发表评论

0/200
365 点赞
0 评论
收藏