SQL извлекает данные с первого дня месяца год назад по сегодняшний день

#sql #sql-server

#sql #sql-сервер

Вопрос:

Я понимаю, что вы уже можете получить информацию за последний год, используя DATEADD(year,-1,GETDATE()) , но я хочу выполнить поиск с первого дня этого месяца год назад. Так, например, сегодня 17.10.2016. Я хочу выполнить поиск с 1 ноября 2015 года. Как бы я это отформатировал?

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

1. 2k12 DATEFROMPARTS(YEAR(YOURDATE) - 1, MONTH(YOURDATE), 1)

Ответ №1:

 select * 
from
where datefield>=
dateadd(year,-1,
DATEADD(month, DATEDIFF(month, 0, getdate()), 0)--gives first date of month
)
 

или с 2012 года: вы можете использовать DATEFROMPARTS, как указано Алексом в комментариях

 select DATEFROMPARTS(YEAR(GETDATE()) - 1, MONTH(GETDATE()), 1)