Ответ 1
Вы можете использовать DATEADD
:
select DATEADD(month, -6, @d)
EDIT: если вам нужно количество дней до 6 месяцев назад, вы можете использовать DATEDIFF
:
select DATEDIFF(day, @d, DATEADD(month, -6, @d))
У меня есть дата, предположим, сегодня дата
declare @d datetime
set @d = '20101014'
Мне нужно
select @d - <six month>
где - действительное число дней, которое содержит последние шесть месяцев, начиная с @d.
Вы можете использовать DATEADD
:
select DATEADD(month, -6, @d)
EDIT: если вам нужно количество дней до 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