2015-03-06 3 views
0

Я запустил хранимую процедуру в 1-м месяце, которая берет все данные за предыдущий месяц и помещает их в другую таблицу. Я делаю это следующим образом:Начало года, основанного на последнем месяце

DECLARE @startOfCurrentMonth DATETIME 
SET @startOfCurrentMonth = DATEADD(month, DATEDIFF(month, 0, CURRENT_TIMESTAMP), 0) 

insert into ThisTable 
select Things 
from AnotherTable 
where AppsEntryDate >= DATEADD(month, -1, @startOfCurrentMonth) 
and AppsEntryDate < @startOfCurrentMonth 

Теперь мне нужно построить еще один запрос, который делает это на ежегодной основе. Итак, сейчас это март. Мне нужно ввести все данные с 1 января 2015 года по 28 февраля 2015 года, используя эту же структуру. Трюк заключается в том, что с 1 января 2016 года мне нужно, чтобы все данные были получены с 2015 года. Как мне это закодировать?

ответ

1

Выяснил, что мне нужно делать.

DECLARE @startOfCurrentMonth DATETIME 
DECLARE @endOfLastMonth DATETIME 
DECLARE @startOfYear DATETIME 

SET @startOfCurrentMonth = DATEADD(month, DATEDIFF(month, 0, CURRENT_TIMESTAMP), 0) 
SET @endOfLastMonth = DATEADD(ss, -1, DATEADD(month, DATEDIFF(month, 0, CURRENT_TIMESTAMP), 0)) 
SET @startOfYear = DATEADD(yy, DATEDIFF(yy, 0, @endOfLastMonth), 0) 
Смежные вопросы