У меня странная проблема. Когда я выполняю следующий запрос к моей базе данных Sql Server 2014
, результат получается ожидаемым (обратите внимание, что LogDay
- это DATE
, а не DATETIME
):
SELECT * FROM myView WHERE LogDay BETWEEN '2018-09-06 01:01:59.000' AND '2018-09-06 01:31:59.000';
но когда я использую переменные или параметры из ADO.NET, он не возвращает запись:
DECLARE @startDate datetime,@toDate DATETIME
SET @startDate='2018-09-06 01:01:59.000';
SET @toDate='2018-09-06 01:31:59.000';
SELECT * FROM myView WHERE LogDay BETWEEN @startDate AND @toDate;--returns no record
Сгенерированный запрос извлекается из профилировщика Sql Server из ADO.NET ExecuterReader с теми же параметрами и значениями, который снова не возвращает записи:
exec sp_executesql N'SELECT * FROM myView WHERE LogDay BETWEEN @startDate AND @toDate;',N'@startDate datetime,@toDate datetime',@startDate='2018-09-06 01:01:00',@toDate='2018-09-06 01:31:00' --no record