gpt4 book ai didi

sql - 如何获取星期六的日期(或任何其他工作日的日期)- SQL Server

转载 作者:行者123 更新时间:2023-12-02 21:43:04 26 4
gpt4 key购买 nike

如何获取星期六的日期。我今天有个约会。

GETDATE()

如何做到这一点。

例如。今天是 08-08-2011

我想要输出为 08-13-2011

最佳答案

如果您像这样调用它,该函数将在下周六返回:

SELECT dbo.fn_Get_NextWeekDay('2011-08-08', 6)

“6”来自the list of possible values您可以设置DATEFIRST

您可以通过相应地更改第二个参数来获取一周中的任何其他日期。

这是函数:

IF OBJECT_ID('dbo.fn_Get_NextWeekDay') IS NOT NULL 
DROP FUNCTION dbo.fn_Get_NextWeekDay
GO
CREATE FUNCTION dbo.fn_Get_NextWeekDay(
@aDate DATETIME
, @dayofweek INT
/*
@dw - day of the week
1 - Monday
2 - Tuesday
3 - Wednesday
4 - Thursday
5 - Friday
6 - Saturday
7 - Sunday
*/
)
RETURNS DATETIME
AS
/*
SELECT dbo.fn_Get_NextWeekDay('2011-08-08', 6)
SELECT dbo.fn_Get_NextWeekDay('2011-08-08', 1)
*/
BEGIN
RETURN
DATEADD(day
, ( @dayofweek + 8 - DATEPART(dw, @aDate) - @@DATEFIRST ) % 7
, @aDate
)
END
GO

[编辑]这可能是另一种解决方案。这应该适用于任何语言:

IF OBJECT_ID('dbo.fn_NextWeekDay') IS NOT NULL 
DROP FUNCTION dbo.fn_NextWeekDay
GO
CREATE FUNCTION dbo.fn_NextWeekDay(
@aDate DATE
, @dayofweek NVARCHAR(30)
)
RETURNS DATE
AS
/*
SELECT dbo.fn_NextWeekDay('2016-12-14', 'fri')
SELECT dbo.fn_NextWeekDay('2016-03-15', 'mon')
*/
BEGIN
DECLARE @dx INT = 6
WHILE UPPER(DATENAME(weekday,@aDate)) NOT LIKE UPPER(@dayofweek) + '%'
BEGIN

SET @aDate = DATEADD(day,1,@aDate)

SET @dx=@dx-1
if @dx < 0
BEGIN
SET @aDate = NULL
BREAK
END
END

RETURN @aDate

END
GO

关于sql - 如何获取星期六的日期(或任何其他工作日的日期)- SQL Server,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6982061/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com