views:

60

answers:

2

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.

+6  A: 

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))
Alex Bagnolini
In this way i'll get date, but i need number of days
skaeff
Read my edit, that should do the trick.
Alex Bagnolini
A: 

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
skaeff