因此,我需要在日期中添加一些日期,例如30天,但是30天不能是日历日,它们是取决于背后某些逻辑的参数,因此,我需要找到一种添加日期30的方法例如,星期一至星期三之间的天数:如果我在2月15日前加上30(星期一至星期三)天,则应该是4月26日。如果我在2月15日前加上30(星期日至星期五)几天,则应该是3月17日。
如果情况还不清楚,请让我知道蚂蚁,我会尽力给出更好的解释。
谢谢。
首先,我在StartDate和EndDate之间生成了一系列日期,但返回的是“星期几”:
SELECT DATEPART(weekday, DATEADD(DAY, nbr - 1, @StartDate)) as dow
FROM (SELECT ROW_NUMBER() OVER ( ORDER BY c.object_id ) AS Nbr
FROM sys.columns c
)nbrs
WHERE nbr - 1 <= DATEDIFF(DAY, @StartDate, @EndDate)
然后,您可以使用简单的WHERE IN()选择要包括的星期几,并计算返回的天数。
DECLARE @StartDate DATE = '20170101'
, @EndDate DATE = '20170131'
SELECT COUNT(*) AS DAYS
FROM (
SELECT DATEPART(weekday, DATEADD(DAY, nbr - 1, @StartDate)) as dow
FROM (SELECT ROW_NUMBER() OVER ( ORDER BY c.object_id ) AS Nbr
FROM sys.columns c
)nbrs
WHERE nbr - 1 <= DATEDIFF(DAY, @StartDate, @EndDate)
) T1
WHERE DOW IN (3,4,5);
在您的SQL Server中,请注意每周的第一天,您可以使用SET DATEFIRST进行更改。
在此处检查:http : //rextester.com/WCLIXM28868
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句