#sql #tsql
Вопрос:
В моем пункте » где » в данный момент у меня просто есть
WHERE StartDate <= '09/01/2019 00:0:0'
AND EndDate >= '09/01/2019 00:0:0'
Эта дата является последним событием 01 сентября. Это 2019 год, но с 01/09 этого года будет 2020 год
Мой вопрос в том, могу ли я автоматизировать это предложение where, чтобы мне не приходилось вводить и изменять его вручную каждый год?
Спасибо, Крис
Комментарии:
1. Тип данных столбца?
2. Что — то похожее на
YEAR(NOW())
? Не совсем понимаю, о чем ты спрашиваешь
Ответ №1:
Вы можете использовать самый последний сентябрь со следующей логикой:
where startdate <= datefromparts(year(dateadd(month, -9, getdate())), 9, 1) and
enddate >= datefromparts(year(dateadd(month, -9, getdate())), 9, 1)
Это вычитает 9 месяцев из текущей даты и использует для этого год. Таким образом, 31 августа был предыдущий год. 1 сентября он «волшебным образом» (ну, художественно) переключается на текущий год.
Комментарии:
1. ИДЕАЛЬНО! Большое вам спасибо!
Ответ №2:
DECLARE @Date NVARCHAR(30)
set @Date = CONCAT('01/09/', DATEPART(YEAR,getdate()))
.. WHERE StartDate<= @Date