2010-10-14 3 views
16

je une date, la date d'aujourd'hui supposentSQL Server 2005: comment soustraire 6 mois

declare @d datetime 
set @d = '20101014' 

J'ai besoin

select @d - <six month> 

où est le nombre réel de jours qui contient six derniers mois, en commençant De d.

+0

Désolé, mais votre question est un peu claire; demandez-vous la date moins 6 mois ou la date il y a 6 mois? – Kane

+0

Ou le nombre de jours depuis la date il y a 6 mois? –

+0

combien de jours = il ya maintenant - 6 mois – skaeff

Répondre

41

Vous pouvez utiliser DATEADD:

select DATEADD(month, -6, @d) 

EDIT: si vous avez besoin le nombre de jours jusqu'à il y a 6 mois, vous pouvez utiliser DATEDIFF:

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

De cette façon, je vais obtenir la date, mais j'ai besoin de nombre de jours – skaeff

+0

Lire mon édition, cela devrait faire l'affaire. –

1

Vérifiez également cette place (développement ce thème):

je dois choisir l'algorithme en fonction de la condition - s'il y a comme l'homme y jours entre deux dates comme dans 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