У меня есть следующий динамический SQL-запрос, который я использую для фильтрации результатов для диапазона данных. Если мои «createdFrom
» и «createdTo
» даты не являются нулевыми, я добавляю предложение where в мой оператор select.TSQL - см., Если дата падает между датой
У меня 2 вопроса:
Как бы вы об этом? Правильно ли моя логика?
В настоящее время я получаю сообщение об ошибке, когда я добавить код, приведенный ниже, почему бы мне получать это ?:
Конверсия удалось при преобразовании строки символов в smalldatetime тип данных.
Declare @createdFromDate SMALLDATETIME = NULL ,
@createdToDate SMALLDATETIME = NULL
IF @createdFromDate IS NOT NULL
BEGIN
SELECT @sWhere = @sWhere + 'AND g.CreatedOn > '[email protected]
END
IF @createdToDate IS NOT NULL
BEGIN
SELECT @sWhere = @sWhere + ' AND g.CreatedOn <'[email protected]
END
Какую версию SQL Server вы используете? – Stephan
SQL Server 2012 – Mark
Следует избегать динамического SQL из-за их уязвимости к атакам SQL Injections. В этом невозможно, а затем попробуйте преобразовать smallDateTime в данные char, прежде чем конкатенировать их в @sWhere. –