web-dev-qa-db-fra.com

SQL Server 2005: comment soustraire 6 mois

J'ai une date, je suppose que c'est aujourd'hui

declare @d datetime
set @d = '20101014'

J'ai besoin

select @d - <six month>

où est le nombre réel de jours qui contient les six derniers mois, à partir de @d.

19
skaeff

Vous pouvez utiliser DATEADD :

select DATEADD(month, -6, @d)

[~ # ~] modifier [~ # ~] : si vous avez besoin du nombre de jours jusqu'à il y a 6 mois, vous pouvez utiliser DATEDIFF :

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

Vérifiez également cela (développement de ce thème):

je dois choisir l'algorithme en fonction de la condition - s'il y a autant de jours entre deux dates qu'en 6 mois (il y a de la dernière date).

Je l'ai fait de cette façon:

    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
1
skaeff