Вопрос

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

declare @d datetime
set @d = '20101014'

я нуждаюсь

select @d - <six month>

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

Это было полезно?

Решение

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

select DATEADD(month, -6, @d)

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

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

Другие советы

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

Мне нужно выбрать альгорию в зависимости от условия - если между двумя датами есть столько дней, сколько в 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
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top