Ayuda procedimiento(2)

15/07/2004 - 18:46 por anonymous | Informe spam
Cordial saludo.

Debo hacer un proceso de comparación de fechas pero hay
fechas que datan del 2000 por eso mi logica seria en un
While; les explico mejor mi caso, resido en Colombia y
hay algo llamado CDAT que es un titulo valor que
dependiendo de un numero de meses gana intereses, ahora
les voy a dar un ejemplo:
Se abrio un CDAT el dia 1 de enero del 2000 a 3 meses,
esa persona deberia retirar el CDAT el dia 1 de abril del
2000 pero aun la fecha es menor de la de hoy asi que se
suman otros 3 meses 1 de julio del 2000, y asi
sucesivamente hasta que esta fecha sea mayor que la
actual.

Este es el procedimiento que he desarrollado pero
no me sale bien.

plazo es el numero de meses del CDAT
me hace bien el insert a la tabla temporal pero cuando
hace el dateadd en el ultimo select no toma bien el case
EJ. la fechacons 04/07/12 y el plazo es a 3 meses el
add seria 2004/10/12 pero en el resultado me arroja
2005/01/12 es como si no me tomara el case 1


create table #tmpcdat(producto smallint,ofic
smallint,cuenta char(8),cedula char(14),saldo money,meses
int,fechacons smalldatetime,plazo int)

insert #tmpcdat
select campo1,campo2,
meses=case
when dateadd(month,plazo,fechacons)>=getdate() then plazo
else
datediff(month,fechacons,getdate())
end,
fechacons,plazo
from tabla where condiciones

select
fechatermino=case
when dateadd(month,meses,fechacons)> getdate()
then dateadd(month,plazo,fechacons)
when dateadd(month,meses,fechacons) = getdate()
then dateadd(month,meses,fechacons)
else
dateadd(month,meses+plazo,fechacons)
end
from #tmpcdat where condiciones


Agradezo la ayuda que me pueda facilitar.
 

Leer las respuestas

#1 José Hurtado
16/07/2004 - 21:56 | Informe spam
Hola, porque no pruebas usando un DATEDIFF(Month, FechaInicio, FechaActual)
y al resultado le aplicas un módulo (%) 3 o el número de meses enteros que
quieras.

Saludos.

Ing. José Hurtado
MCP (candidato a MCDBA)

"anonymous" escribió en el mensaje
news:2dc6a01c46a8b$4966aa80$
Cordial saludo.

Debo hacer un proceso de comparación de fechas pero hay
fechas que datan del 2000 por eso mi logica seria en un
While; les explico mejor mi caso, resido en Colombia y
hay algo llamado CDAT que es un titulo valor que
dependiendo de un numero de meses gana intereses, ahora
les voy a dar un ejemplo:
Se abrio un CDAT el dia 1 de enero del 2000 a 3 meses,
esa persona deberia retirar el CDAT el dia 1 de abril del
2000 pero aun la fecha es menor de la de hoy asi que se
suman otros 3 meses 1 de julio del 2000, y asi
sucesivamente hasta que esta fecha sea mayor que la
actual.

Este es el procedimiento que he desarrollado pero
no me sale bien.

plazo es el numero de meses del CDAT
me hace bien el insert a la tabla temporal pero cuando
hace el dateadd en el ultimo select no toma bien el case
EJ. la fechacons 04/07/12 y el plazo es a 3 meses el
add seria 2004/10/12 pero en el resultado me arroja
2005/01/12 es como si no me tomara el case 1


create table #tmpcdat(producto smallint,ofic
smallint,cuenta char(8),cedula char(14),saldo money,meses
int,fechacons smalldatetime,plazo int)

insert #tmpcdat
select campo1,campo2,
meses=case
when dateadd(month,plazo,fechacons)>=getdate() then plazo
else
datediff(month,fechacons,getdate())
end,
fechacons,plazo
from tabla where condiciones

select
fechatermino=case
when dateadd(month,meses,fechacons)> getdate()
then dateadd(month,plazo,fechacons)
when dateadd(month,meses,fechacons) = getdate()
then dateadd(month,meses,fechacons)
else
dateadd(month,meses+plazo,fechacons)
end
from #tmpcdat where condiciones


Agradezo la ayuda que me pueda facilitar.

Preguntas similares