Sumar dias a una fecha de acuerdo a un calculo.

07/08/2007 - 21:31 por Matias | Informe spam
Hola, espero que se entienda lo que quiero hacer:
El tema es que necesito sumar x cantidad de dias a los campos de una tabla
teniendo en cuenta la fecha actual(GetDate) y un valor que recibo.

Supongamos que me pasan como valor 24 dias
Y tengo en una tabla las fechas:

2004-04-10
2004-04-15


Estos son los dias que me faltan para llegar a getdate, sacados con
DatediFF:

1214 para 2004-04-10
1209 para 2004-04-15

Lo que quiero hacer es restar los dias que me faltan para llegar a getdate
menos el valor que recibo(24) y a esto sumarselo a la fecha inicial, algo
asi:

select DATEADD(day,(DATEDIFF(DAY, fecha, getdate())-24), fecha) from tabla

Obiamente que esto no me funciona, los resultado deberian ser:

2007-07-14 para 2004-04-10
2007-07-19 para 2004-04-15

Gracias, y perdon por lo malo de la explicacion.

PD: los campos son de tipo DateTime y estoy con sql 2k.

Preguntas similare

Leer las respuestas

#1 Ele
08/08/2007 - 02:18 | Informe spam
que es lo que quieres hacer? por que siempre le quitas los dias atrasados
quiza tu resultado esperado es asi Select DATEADD(DAY, -24, getdate())

"Matias" escribió en el mensaje
news:
Hola, espero que se entienda lo que quiero hacer:
El tema es que necesito sumar x cantidad de dias a los campos de una tabla
teniendo en cuenta la fecha actual(GetDate) y un valor que recibo.

Supongamos que me pasan como valor 24 dias
Y tengo en una tabla las fechas:

2004-04-10
2004-04-15


Estos son los dias que me faltan para llegar a getdate, sacados con
DatediFF:

1214 para 2004-04-10
1209 para 2004-04-15

Lo que quiero hacer es restar los dias que me faltan para llegar a getdate
menos el valor que recibo(24) y a esto sumarselo a la fecha inicial, algo
asi:

select DATEADD(day,(DATEDIFF(DAY, fecha, getdate())-24), fecha) from tabla

Obiamente que esto no me funciona, los resultado deberian ser:

2007-07-14 para 2004-04-10
2007-07-19 para 2004-04-15

Gracias, y perdon por lo malo de la explicacion.

PD: los campos son de tipo DateTime y estoy con sql 2k.


Respuesta Responder a este mensaje
#2 Matias
08/08/2007 - 15:32 | Informe spam
Gracias por responder, pero no es lo que me hace falta, para el calculo
tengo que tener en cuenta la fecha que ya esta cargada.

"Ele" escribió en el mensaje
news:
que es lo que quieres hacer? por que siempre le quitas los dias atrasados
quiza tu resultado esperado es asi Select DATEADD(DAY, -24, getdate())

"Matias" escribió en el mensaje
news:
Hola, espero que se entienda lo que quiero hacer:
El tema es que necesito sumar x cantidad de dias a los campos de una
tabla teniendo en cuenta la fecha actual(GetDate) y un valor que recibo.

Supongamos que me pasan como valor 24 dias
Y tengo en una tabla las fechas:

2004-04-10
2004-04-15


Estos son los dias que me faltan para llegar a getdate, sacados con
DatediFF:

1214 para 2004-04-10
1209 para 2004-04-15

Lo que quiero hacer es restar los dias que me faltan para llegar a
getdate menos el valor que recibo(24) y a esto sumarselo a la fecha
inicial, algo asi:

select DATEADD(day,(DATEDIFF(DAY, fecha, getdate())-24), fecha) from
tabla

Obiamente que esto no me funciona, los resultado deberian ser:

2007-07-14 para 2004-04-10
2007-07-19 para 2004-04-15

Gracias, y perdon por lo malo de la explicacion.

PD: los campos son de tipo DateTime y estoy con sql 2k.






Respuesta Responder a este mensaje
#3 principiante
09/08/2007 - 04:34 | Informe spam
Segun lo que explicaste, es exactamente como te dice Ele.

Para la expresion que pusiste: DATEADD(day,(DATEDIFF(DAY, fecha,
getdate())-24), fecha)
No va a importar que valor tenga el campo Fecha para un mismo getdate()
siempre te va a dar el mismo resultado igual a:
DATEADD(DAY, -24, getdate())

Haz la prueba poniendolo como una expresion aritmetica:

fecha + (getdate()-fecha - 24)

la expresion se reduce a (getdate()-24) porque fecha se anula con -fecha.

Por tanto resulta en una expresion que depende de getdate() no de fecha.

Si no es asi, pues fue que no lo explicaste bien


Jose TH


"Matias" escribió en el mensaje
news:
Gracias por responder, pero no es lo que me hace falta, para el calculo
tengo que tener en cuenta la fecha que ya esta cargada.

"Ele" escribió en el mensaje
news:
que es lo que quieres hacer? por que siempre le quitas los dias atrasados
quiza tu resultado esperado es asi Select DATEADD(DAY, -24, getdate())

"Matias" escribió en el mensaje
news:
Hola, espero que se entienda lo que quiero hacer:
El tema es que necesito sumar x cantidad de dias a los campos de una
tabla teniendo en cuenta la fecha actual(GetDate) y un valor que recibo.

Supongamos que me pasan como valor 24 dias
Y tengo en una tabla las fechas:

2004-04-10
2004-04-15


Estos son los dias que me faltan para llegar a getdate, sacados con
DatediFF:

1214 para 2004-04-10
1209 para 2004-04-15

Lo que quiero hacer es restar los dias que me faltan para llegar a
getdate menos el valor que recibo(24) y a esto sumarselo a la fecha
inicial, algo asi:

select DATEADD(day,(DATEDIFF(DAY, fecha, getdate())-24), fecha) from
tabla

Obiamente que esto no me funciona, los resultado deberian ser:

2007-07-14 para 2004-04-10
2007-07-19 para 2004-04-15

Gracias, y perdon por lo malo de la explicacion.

PD: los campos son de tipo DateTime y estoy con sql 2k.










email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida