Мне нужна помощь в создании @query, где я получаю записи о дате только в течение заранее определенного интервала. Мой полный запрос здесь не показан, так как остальная часть запроса работает нормально. Я только хочу получить записи данных, которые находятся в пределах определенного временного интервала.
Мой временной интервал структурирован по FirstOfMonth и EndOfMonth для каждого месяца и года, что означает, что данные выглядят так иформат установлен на дату:
Я хочу выбрать данные, попадающие в предопределенный интервал, заданный @DateStart
и @DateEnd
. Поскольку запрос также должен вызывать имена столбцов, я решил использовать этот метод. В моем старом запросе я использовал показанное предложение WHERE AS. Я хочу перехватить все записи, которые попадают в число первого месяца в выбранном @DateStart
и последнего месяца в выбранном @DateEnd
.
Когда я пытаюсь объявить переменные как datetime
, я получаю сообщение об ошибке, в котором говорится, что я не могу использовать и NVARCHAR(MAX)
, и (Datetime
) в одном и том же @query. Правильно ли это понято?
BEGIN
DECLARE
,@DateStart AS NVARCHAR(MAX)
,@DateEnd AS NVARCHAR(MAX)
-- , + 4 Multiple Dynamically Declared
SET @DateStart = '2016-03-23'
SET @DateEnd ='2019-01-31'
set @query =
'
SELECT
* -- 4 Dynamically Declared Variables Here
,StartOfMonth
,EndOfMonth
FROM TestData
WHERE StartOfMonth >= DATEADD(DAY,1,EOMONTH(' + @DateStart + ',-1))
AND EndOfMonth <= EOMONTH(' + @DateEnd + ')
'
EXEC sp_executesql @Query
END