Сравнение переменных datetime в хранимой процедуре
Я пытаюсь сравнить две переменные datetime в хранимой процедуре sql server.
В приведенном ниже фрагменте кода @createdDate берется в качестве пользовательского ввода и затем сравнивается со столбцом типа datetime. Я не могу проверить свойство "="
set @sqlquery = 'Select v.*, vsc.vidhanSabhaConstituencyName, where 1=1 ' set @sqlquery = @sqlquery +'AND v.createdBy ='''+cast(@createdBy as nvarchar(100))+'''' if(@VoterIdNumber is not null) set @sqlquery = @sqlquery+'AND v.voterIDNumber= '''+@VoterIdNumber+'''' if(@createdDate is not null) set @sqlquery = @sqlquery+'AND v.dataIsCreated = '''+cast(@createdDate as varchar(100))+'''' else set @sqlquery = @sqlquery+'AND v.dataIsCreated= '''+cast(getdate() as varchar(100))+'''' Execute sp_Executesql @sqlquery
Что я уже пробовал:
Я попытался привести и преобразовать переменную @createdDate без успеха.
Он работает с другими операторами, такими как >= или <=, но не с = .
Помощь очень ценится
F-ES Sitecore
Посмотрите, что находится в "@createdDate", посмотрите, что находится в dataIsCreated, посмотрите, что возвращается GetDate(). Это одно и то же. Буквально то же самое? Если нет, то именно поэтому ваш "=" терпит неудачу. Вы делаете предположения о вещах, поэтому решение состоит в том, чтобы выяснить, в чем заключается ваше ошибочное предположение и как его устранить. например, вы предполагаете, что 2018-03-15-это то же самое, что GetDate()? Если это так, то это предположение неверно, так как GetDate включает в себя время, поэтому 2018-03-15 не равно 2018-13-15 13:55. Это всего лишь одно из многих предположений, которые вы можете сделать, мы не можем получить доступ к вашим данным, поэтому не можем сказать наверняка.
Кроме того, не преобразуйте даты в строки, это только даст вам еще больше проблем сверху.
Abhi1 Kanobi
На самом деле проблема заключается в том , что я делаю динамический запрос на основе значений, предоставленных Пользователем . @sqlquery в задаче-это строка, которая выполняется. Все мои колонки-это дата и время .
когда я не бросаю и не сравниваю @createdDate напрямую , он выдает ошибку, как указано ниже: "типы данных nvarchar и date несовместимы в операторе add."