В моей хранимой процедуре SQL есть строка, которая выглядит следующим образом (работает как задумано):
HAVING oh.startdate BETWEEN @startDate AND @endDate
Тем не менее, ниже у меня есть строка:
AND (oh.user IN (@userIDs))
Где @userIDs - это строка идентификаторов, разделенных запятыми, а oh.user - INTEGER, поэтому я должен фактически поместить весь SQL-запрос в динамическую строку (@sql) со всеми параметрами, объединенными в него, а затем использовать
sp_executesql @sql
Все работает нормально, кроме ДАННЫХ МЕЖДУ, я пробовал несколько способов и продолжаю получать ошибки или никаких результатов не возвращается, когда должно быть:
HAVING oh.startdate BETWEEN CONVERT(DATETIME, '+LEFT(CONVERT(VARCHAR, @startDate, 120), 10)+', 120) AND CONVERT(DATETIME, '+LEFT(CONVERT(VARCHAR, @endDate, 120), 10)+', 120)
ничего не возвращает.
HAVING oh.startdate '+LEFT(CONVERT(VARCHAR, @startDate, 120), 10)+' AND '+LEFT(CONVERT(VARCHAR, @endDate, 120), 10)+'
также ничего не возвращает.
HAVING oh.startdate BETWEEN ' + @startDate +' AND '+ @endDate +'
возвращает ошибку преобразования DATETIME в строку.
Любая помощь приветствуется.
Спасибо,
Томас