CREATE FUNCTION [dbo].FN_GET_ALL_DATES_WITH_DAY_NAME
(
@DateFrom varchar(25)
,@DateTo varchar(25)
,@DayName varchar(25)
)
RETURNS
@ParsedList table
(
ListValue varchar(25)
)
AS
BEGIN
;WITH ALLDATES ( date )
AS
(
SELECT @DateFrom
UNION ALL
SELECT DATEADD(d,1,date)
FROM ALLDATES
WHERE date < @DateTo
)
SELECT date FROM ALLDATES WHERE DATENAME(dw, date) = @DayName
RETURN
END
我遇到了这个错误:
消息240,级别16,状态1,过程FN_GET_ALL_DATES_WITH_DAY_NAME, 第18行类型在锚点和递归部分之间不匹配 专栏&#34;日期&#34;递归查询&#34; ALLDATES&#34;。
任何帮助将不胜感激。感谢。
答案 0 :(得分:1)
@DateFrom是一个varchar而DATEADD函数返回smalldatetime。
您还尝试比较日期&#39;您的CTE中的列@DateTo也是一个varchar。
尝试显式匹配参数和其他列的数据类型。