【发布时间】:2020-08-17 23:13:52
【问题描述】:
我有这个带有 3 个参数的存储过程 -1:开始日期 -2:结束日期 -3 : 日期名称 这个存储过程的功能是在不计算特定日期的情况下获取两个日期之间的差异
CREATE PROCEDURE TEST (@start_date DATE,@end_date DATE,@name_days VARCHAR(MAX))
AS
BEGIN
DECLARE @NUMBER_DAYS INT;
;with AllDates AS
(
SELECT @start_date AS DateOf
UNION ALL
SELECT DateAdd(day,1,DateOf)
FROM AllDates
WHERE DateOf<@end_date
)
select SUM(CASE WHEN DATENAME(weekday,dateof) in (@name_days) THEN 0 ELSE 1 END) as SumOfDays
FROM AllDates;
END
我的问题是我需要知道我是否可以像示例一样在执行过程中添加两个天的名称(但这对我不起作用,请有任何建议!以及如何做)
EXEC TEST '2020-07-01','2020-07-13','Monday Tuesday'
【问题讨论】:
-
您可以运行它,但它不会返回任何结果,因为日期名称与参数值不匹配。您将不得不更改比较方法。
-
in (@name_days)不会像你期望的那样。
标签: sql sql-server tsql