дата сср - PullRequest
       23

дата сср

0 голосов
/ 01 мая 2019

У меня есть запрос SQL для отчета SSRS, чтобы получить результаты, в которых запись была создана между двумя датами, я использую параметры для значений даты

select * from results
where [startdate] >=@datestart or [startdate] <=@dateend

, когда я запускаю отчет SSRS и выбираюв тот же день для @startdate и @enddate я получаю 2 записи, которые, как я знаю, неверны.Когда я запускаю запрос SQL и использую дату, например, «01 февраля 2019», а не параметр, я получаю разные результаты.Нужно ли исключать время из моих параметров или установить для @startdate время 00:00:00 и установить для @dateend значение 23:59:59, чтобы получить те же результаты, если я использовал фактическую дату?

Ответы [ 3 ]

1 голос
/ 01 мая 2019

Если ваши параметры SSRS имеют значения date, а данные - datetime, самое простое решение - добавить один день к вашему @dateend, а затем искать любое значение datetime до , но не равное it.

Использование < вместо <= важно, потому что время бесконечно.В вашем примере изменения значения @enddate для добавления 23:59:59 любые значения datetime между 23:59:59 и концом дня (например, 23:59:59.5) не будут включены.

Таким образом, вы можете структурировать свой скрипт так:

select *
from results
where [startdate] >= @datestart
    and [startdate] < dateadd(day,1,@dateend)
0 голосов
/ 01 мая 2019

@ Решение imadave будет отлично работать.

Кроме того, вы можете просто использовать предложение «МЕЖДУ», чтобы получить результат.Он вернет все даты между заданным диапазоном (включительно).Если часть времени не указана, по умолчанию используется значение 00:00

SELECT * FROM results 
WHERE [startdate] BETWEEN @datestart AND @dateend
0 голосов
/ 01 мая 2019

Вы должны усекать дату и время только до даты.

select * from results
  where cast(startdate As Date) >= @datestart
    and cast(startdate As Date) <= @dateend
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...