Я родился в 1978 году / 12/22
Я хотел, чтобы запрос (в CTE!) Отображал все мои дни рождения (datepart day = 22)
declare @t0 datetime = '1978/12/22';
declare @t1 datetime = getdate();
with CTEE (val,day1)
AS
(
SELECT @t0,DATEPART(day,@t0)
UNION all
SELECT DATEADD(day,1,val) , DATEPART(day,day1) from ctee where( DATEADD(day,1,val) <=@t1) and DATEPART(day,day1)=22
)
select val,day1 from CTEE OPTION (MAXRECURSION 20000)
Как бы то ни было, это возвращает мне 1 строку ( почему ???)
If I remove
and DATEPART(day,day1)=22
так что это дает мне все дни, когда я живу.
Решение, которое я нашел, таково:
declare @t0 datetime = '1978/12/22';
declare @t1 datetime = getdate();
with CTEE (val,day1)
AS
(
SELECT @t0,DATEPART(day,@t0)
UNION all
SELECT DATEADD(day,1,val) , DATEPART(day,day1) from ctee where( DATEADD(day,1,val) <=@t1)
)
select val,day1 from CTEE where day1=22 OPTION (MAXRECURSION 20000)
Но мой вопрос , почему в первом запросе это не сработало?