Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

SQL Server 2005: how to subtract 6 month

I have a date, suppose today date

declare @d datetime
set @d = '20101014'

I need

select @d - <six month>

where is the real number of days that contains last six month, beginning from @d.

like image 664
skaeff Avatar asked Oct 14 '10 12:10

skaeff


2 Answers

You can use DATEADD:

select DATEADD(month, -6, @d)

EDIT: if you need the number of days up to 6 months ago you can use DATEDIFF:

select DATEDIFF(day, @d, DATEADD(month, -6, @d))
like image 101
Alex Bagnolini Avatar answered Oct 13 '22 20:10

Alex Bagnolini


Also check this up (developing this theme):

i need to choose the algorythm depending on the condition - if there are as many days between two dates as in 6 month (ago from the last date).

I did it in this way:

    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
like image 32
skaeff Avatar answered Oct 13 '22 21:10

skaeff