SQL Server 2005: как вычесть 6 месяцев

У меня есть дата, предположим, сегодня дата

declare @d datetime
set @d = '20101014'

Мне нужно

select @d - <six month>

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

Ответы

Ответ 1

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

select DATEADD(month, -6, @d)

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

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

Ответ 2

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

Мне нужно выбрать алгоритм в зависимости от условия - если между двумя датами существует столько дней, сколько в течение 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