2010-10-14 4 views
16

У меня есть дата, предположим, что дата сегодняSQL Server 2005: как вычесть 6 месяцев

declare @d datetime 
set @d = '20101014' 

Мне нужно

select @d - <six month> 

, где реальное количество дней, которое содержит последние шесть месяцев, начиная с от @d.

+0

Извините, но ваш вопрос немного неясно; вы просите дату менее 6 месяцев или дату 6 месяцев назад? – Kane

+0

Или количество дней с даты 6 месяцев назад? –

+0

Сколько дней = сейчас - 6 месяцев назад – skaeff

ответ

41

Вы можете использовать DATEADD:

select DATEADD(month, -6, @d) 

EDIT: если вам нужно несколько дней до 6 месяцев назад вы можете использовать DATEDIFF:

select DATEDIFF(day, @d, DATEADD(month, -6, @d)) 
+0

Таким образом, я получу дату, но мне нужно количество дней – skaeff

+0

Прочтите мое редактирование, которое должно сделать трюк. –

1

Также проверьте это вверх (разработка эта тема):

Мне нужно выбрать алгоритм в зависимости от состояния - если есть человек y дней между двумя датами, как через 6 месяцев (с последней даты).

Я сделал это таким образом:

case 
     when 
     DATEDIFF(day, DATEADD(month, -6, @pDateEnd), @pDateEnd) 
     > 
     DATEDIFF(day, @pDateBegin, @pDateEnd) 
     then 'there is no 6-month difference between two dates' 
     else 'there is 6-month difference ore more between two dates' 
    end