Tsql Maxrecursion和Column导致溢出错误

Tsql Maxrecursion和Column导致溢出错误,tsql,sql-server-2012,Tsql,Sql Server 2012,我在这个查询中得到了一个最大递归错误 WITH [Days] AS ( SELECT DATENAME(weekday,getdate()) AS NameOfDay ,DAY(GETDATE()) AS NumberOfDay ,GETDATE() AS curDate UNION ALL SELECT DATENAME(WEEKDAY,DATEADD(day, -1, curDate)) As NameOfDay

我在这个查询中得到了一个最大递归错误

WITH [Days] AS
(   
    SELECT DATENAME(weekday,getdate()) AS NameOfDay
          ,DAY(GETDATE()) AS NumberOfDay
          ,GETDATE() AS curDate
    UNION ALL
    SELECT DATENAME(WEEKDAY,DATEADD(day, -1, curDate)) As NameOfDay
          ,DAY(DATEADD(DAY, -1, curDate)) AS NumberOfDay
          ,DATEADD(DAY, -1, curDate) AS curDate
    FROM [Days]
    WHERE DAY(GETDATE()) - DAY(DATEADD(DAY, -1, curDate)) >= 0
)
SELECT NameOfDay
FROM [Days]  
ORDER BY NumberOfDay 
错误是:

声明终止了。在语句完成之前,已耗尽最大递归100

将选项maxrecursion 0添加到查询时,出现以下错误:

向“datetime”列添加值导致溢出

我不知道如何解决这些错误。任何帮助都将不胜感激

谢谢。

你可以试试这个:

SET DATEFIRST 7;
GO
WITH [Days] AS
(   
    SELECT DATENAME(WEEKDAY, GETDATE()) AS NameOfDay
          ,DAY(GETDATE()) AS NumberOfDay
          ,GETDATE() AS curDate
    UNION ALL
    SELECT DATENAME(WEEKDAY,DATEADD(day, -1, curDate)) As NameOfDay
          ,DAY(DATEADD(DAY, -1, curDate)) AS NumberOfDay
          ,DATEADD(DAY, -1, curDate) AS curDate
    FROM [Days]
    WHERE DATEPART(WEEKDAY, DATEADD(DAY, -1, curDate)) >= 2
)
SELECT NameOfDay
FROM [Days]

你想达到什么目的?我想得到基于本周的天数。@Arpita基于本周的天数名称?什么我不明白。您希望有多少条记录?调试此类问题的一个有用技巧是添加一个从1开始并递增的列。更改终止条件,将计数限制为合理值,并检查结果*。您可能希望在WHERE条件中为值添加列,以便更容易地看到出错的地方。@king.code-我的意思是今天,我想在表中显示星期一、星期二和星期三。明天,我想展示星期一、星期二、星期三和星期四。明确允许无限递归的值是否意味着未来几周可能比七天长得多?还是有人改变了默认的递归限制?@HABO我刚刚修改了WHERE条件。可以删除选项MAXRECURSION 0。@king.code但如果删除选项MAXRECURSION 0,则在语句完成错误再次出现之前,最大递归100已用尽,对吗?@Arpita nope。试试看。当curDate-1为星期一时,递归将停止。