SQL Server 2005: как вычесть 6 месяцев - PullRequest
18 голосов
/ 14 октября 2010

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

declare @d datetime
set @d = '20101014'

мне нужно

select @d - <six month>

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

Ответы [ 2 ]

46 голосов
/ 14 октября 2010

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

select DATEADD(month, -6, @d)

РЕДАКТИРОВАТЬ : если вам нужно количество дней до 6 месяцев назад, вы можете использовать DATEDIFF:

select DATEDIFF(day, @d, DATEADD(month, -6, @d))
1 голос
/ 15 октября 2010

Также проверьте это (развивая эту тему):

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