2010-10-14 15 views
16

tengo una cita, supongamos que la fecha de hoySQL Server 2005: cómo restar 6 meses

declare @d datetime 
set @d = '20101014' 

necesito

select @d - <six month> 

donde es el número real de días que contiene el último medio año, a partir de desde D.

+0

Lo sentimos, pero su pregunta es un poco confuso; ¿Está pidiendo la fecha de menos de 6 meses o la fecha de hace 6 meses? – Kane

+0

¿O la cantidad de días desde la fecha de hace 6 meses? –

+0

cuántos días = ahora - 6 meses atrás – skaeff

Respuesta

41

Puede utilizar DATEADD:

select DATEADD(month, -6, @d) 

EDITAR: si usted necesita el número de días hasta 6 meses puede utilizar DATEDIFF:

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

De esta forma obtendré la fecha, pero necesito el número de días – skaeff

+0

Lean mi edición, eso debería ser el truco. –

1

También puedes ver esto (el desarrollo este tema):

tengo que elegir el algorythm dependiendo de la condición - si hay como hombre y días entre dos fechas como en 6 meses (desde la última fecha).

lo hice de esta manera:

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