2014-09-15 2 views
0

Я смог объявить и установить захват данных предыдущих месяцев.Предыдущий месяц за предыдущий год

DECLARE @FirstDayofPrevMonth datetime 
SET @FirstDayofPrevMonth = DATEADD(mm, DATEDIFF(m,0,GETDATE())-1,0) 
DECLARE @LastDayofPrevMonth datetime 
SET @LastDayofPrevMonth = DATEADD(s,-1,DATEADD(mm, DATEDIFF(m,0,GETDATE()),0)) 

Что мне теперь нужно, чтобы быть в состоянии установить и объявить предыдущий месяц, предшествующий год ....

быть ясно, это действительно работает для меня. Я получаю ожидаемый результат, который в августе 2014 года. Что я хочу сделать, это получить август 2013 года и так далее.

ОБНОВЛЕНИЕ: Я думал, что поделюсь двумя другими частями, которые я добавил в свой код, который может быть полезен другим.

Я использовал ответ ниже и добавили к нему

DECLARE @FirstDayofPrevMonth datetime 
SET @FirstDayofPrevMonth = DATEADD(mm, DATEDIFF(m,0,GETDATE())-1,0) 
DECLARE @LastDayofPrevMonth datetime 
SET @LastDayofPrevMonth = DATEADD(s,-1,DATEADD(mm, DATEDIFF(m,0,GETDATE()),0)) 

- для использования за предыдущий год завершенного месяц

DECLARE @FirstDayofPrevMonthLY datetime 
SET @FirstDayofPrevMonthLY = DATEADD(year,-1,@FirstDayofPrevMonth) 
DECLARE @LastDayofPrevMonthLY datetime 
SET @LastDayofPrevMonthLY = DATEADD(year,-1,@LastDayofPrevMonth) 

--This будет использоваться, если вы хотите для дат в текущем квартале

DECLARE @FirstDayofCQ datetime 
SET @FirstDayofCQ = DATEADD(qq, DATEDIFF(qq, 0, GETDATE()), 0) 
DECLARE @LastDayofCQ datetime 
SET @LastDayofCQ =DATEADD(qq, DATEDIFF(qq, 0, GETDATE()) + 1, 0) 

--This будет использоваться для предварительного Quarter

DECLARE @FirstDayofPrevQ datetime 
SET @FirstDayofPrevQ = DATEADD(qq, DATEDIFF(qq, 0, GETDATE()) - 1, 0) 
DECLARE @LastDayofPrevQ datetime 
SET @LastDayofPrevQ = DATEADD(dd, -1, DATEADD(qq, DATEDIFF(qq, 0, GETDATE()), 0)) 
+0

Похоже, у вас уже есть способ получить до месяца, нет? Разве это не приводит к желаемому результату? – Brad

+0

это получает меня в прошлом месяце. Я хочу в прошлом месяце в 2013 году. Так что в августе 2013 года. В настоящее время я получаю Aug 2014 с этим – donviti

+3

'DATEADD (MONTH, DATEDIFF (MONTH, 0, GETDATE()) - 13,0)' – Lamak

ответ

2
DECLARE @FirstDayofPrevMonthPriorYear datetime 
DECLARE @LastDayofPrevMonthPriorYear datetime 
SET @FirstDayofPrevMonthPriorYear = DATEADD(year,-1,@FirstDayofPrevMonth) 
SET @LastDayofPrevMonthPriorYear = DATEADD(year,-1,@LastDayofPrevMonth) 
+0

um, да ... ничего себе. Не думал бы об этом. Так просто! – donviti

1
DECLARE @FirstDayofPrevMonthPrevYear datetime 

SET @FirstDayofPrevMonthPrevYear = (DATEADD(yy, -1, DATEADD(mm, DATEDIFF(m,0,GETDATE())-1,0))) 
+0

Благодарим вас за ответ. похоже, что это тоже сработает – donviti