Страницы

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

четверг, 13 февраля 2020 г.

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

#sql #sql_server


Есть запрос:

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
    


Ответы

Ответ 1



С помощью функции 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.

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

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