Страницы

Поиск по вопросам

вторник, 23 апреля 2019 г.

Как добавить к параметру +1 день?

Есть запрос:
declare @StartDate DateTime='2016-01-01', @EndDate DateTime='2016-02-29' BEGIN SET NOCOUNT ON; select id, ModifiedAt From Deals Where ModifiedAt between @StartDate and @EndDate END
Как сделать при интервалах даты '2016-01-01' по '2016-02-29' запрос выполнялся по 2016-01-01 по 2016-03-01? То есть нужно в Where добавить условия +1 Day


Ответ

С помощью функции dateadd
Where ModifiedAt between @StartDate and dateadd(day, 1, @EndDate)
Можно добавлять день, час, месяц, год, неделю и т.п. - это задаётся первым параметром. Второй параметр - сколько соответствующих интервалов добавить. Последний - то к чему добавлять. Замечу, что можно добавлять отрицательные величины.

Вижу, у вас это в процедуре с параметром, иногда удобнее прибавлять день к параметру перед вызовом процедуры (например, если происходит вызов из внешнего приложения), оставив в ней:
Where ModifiedAt between @StartDate and @EndDate
но, это конечно - как вам удобнее.
Да, и, для дат часто делают проверку интервала с нижней границей включённой, а верхней - исключенной, чтобы если сделка совершена ровно в промежутке, она не попадала в два интервала одновременно:
Where ModifiedAt >= @StartDate and ModifiedAt < @EndDate
T.е. если у нас допустим @StartDate = 2016-01-01 a @EndDate = 2016-03-01, то возьмутся записи с 2016-01-01 00:00:00.000 примерно по 2016-02-29 23:59:59

Комментариев нет:

Отправить комментарий