Member 13952568 Ответов: 1

Передача диапазона дат скалярной пользовательской функции в SQL SERVER


Привет, у меня есть следующая функция UDF, которая принимает параметр даты и возвращает 4 поля.

select a,b,c,d from [dbo].[udf_ConfReportedDate] ({D'2017-05-31'})


Я хотел бы передать диапазон дат, скажем, от 2017-05-31 до 2017-06-30, один за другим и добавить свой вывод. Как я могу этого достичь?

Пожалуйста, обратите внимание, что мой UDF может принимать только одно свидание за раз.

Что я уже пробовал:

Объявить @Start_Date DATETIME ='2016-06-01'
Объявить @End_Date DATETIME ='2016-12-31'

Выберите * из [dbo].[udf_ConfReportedDate] (2017-05-31{Д''})

Но он дает только на одно свидание. Могу ли я передавать даты с помощью цикла while, CTE или чего-то еще?

1 Ответов

Рейтинг:
0

PeejayAdams

Это даст вам эффективную таблицу подсчета требуемых дат, просто обработайте свой вызов функции в SELECT, и все будет в порядке:

DECLARE @toDate DATE
DECLARE @fromDate DATE
SET @fromDate = '2017-05-31'
SET @toDate='2017-06-30'
 
;WITH cte (Date)  AS
(
    SELECT @fromDate 
        UNION ALL
    SELECT DATEADD(DAY, 1, Date)
        FROM cte
        WHERE Date < @toDate
)
SELECT * FROM cte