SQL Server - Utilizar una fecha u otra

 
Vista:

Utilizar una fecha u otra

Publicado por David (3 intervenciones) el 01/08/2013 01:54:32
Necesito utilizar una fecha u otra para calcular el total de cuotas(en este momento utilizo la fecha del sistema pero si es mayor a la fecha final, necesito usar la fecha final) de primera opcion se me ocurrio un case pero no lo soporta, alguna sugerencia? es SQL 2005



(DATEDIFF(DAY,A.fechaRecepcion,Convert(datetime,GETDATE(),103)) / P.periodicidad) * P.montoAbono AS TotalCuotas,


CASE WHEN P.fechaFinal > GETDATE() THEN GETDATE() ELSE P.fechaFinal END AS FECHA
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Geri Reshef

Utilizar una fecha u otra

Publicado por Geri Reshef (17 intervenciones) el 01/08/2013 12:05:25
No utilices la función Convert Dentro el DateDiff:

1
(DATEDIFF(DAY,A.fechaRecepcion,GETDATE()) / P.periodicidad) * P.montoAbono AS TotalCuotas


o más bien:

1
(DATEDIFF(DAY,A.fechaRecepcion,CASE WHEN P.fechaFinal>GETDATE() THEN GETDATE() ELSE P.fechaFinal END) / P.periodicidad) * P.montoAbono AS TotalCuotas
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Utilizar una fecha u otra

Publicado por David Carballo (3 intervenciones) el 01/08/2013 16:26:50
El convert lo debo utilizar sino me da error en el formato de la fecha del sistema porque en algunos equipos lo extrae ddMMaaaa y otros MMddaaaa, pero la primer parte funciona perfecto, el problema es que a veces necesito utilizar la fecha final y no la del sistema, se me ocurrio lo del CASE, pero ese código no funciona, muchas gracias por tu respuesta.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Geri

Utilizar una fecha u otra

Publicado por Geri (17 intervenciones) el 01/08/2013 19:23:51
1. El sistema "sabe" que GetDate() es fecha, y es inecesario convertirla en una cadena antes que el sistema la convierta de vuelta en fecha.
Cuando utilizas SQL dinamico lo que hiciste es correcto porque la fecha debe ser convertida en una cadena de formato correcto 'aaaaMMdd hh:mm:SS.sss' (sin los guiones!).

2. Probe y la funcion DateAdd funciona correctamente con Case en el segundo y el tercero paramentro.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Utilizar una fecha u otra

Publicado por David Carballo (3 intervenciones) el 01/08/2013 19:47:33
Gracias por tu ayuda, tienes razon, ayer no me servia el CASE y era por la fecha 31 del 7, hoy simplemente le di ejecutar y funciono lo cual me sucedio por ser 1 del 8, no se claramente porque es que me pasa esto pero siempre me sucede con las fechas por eso es que uso el convert.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar