Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » SQL Server »

Error en consulta con fechas

Estas en el tema de Error en consulta con fechas en el foro de SQL Server en Foros del Web. Buenas, tengo un problema con una select que incluye un rango de fechas. Si le pongo en la consulta que sea >= fechainicio y <= ...
  #1 (permalink)  
Antiguo 25/09/2009, 08:07
 
Fecha de Ingreso: mayo-2003
Mensajes: 70
Antigüedad: 21 años
Puntos: 0
Error en consulta con fechas

Buenas,

tengo un problema con una select que incluye un rango de fechas.
Si le pongo en la consulta que sea >= fechainicio y <=fechafin, siempre me coge como rango un dia anterior a la fechafin, es decir, si le pido que la fechafin sea el 20 de agosto, me muestra hasta el 19 de agosto y se olvida de los resultados del dia 20. Para solucionar esto lo que hice fue sumar 1 a la fechafin. Hasta ahi todo correcto, soluciono este problema.

El problema viene cuando la fechafin seleccionada es el ultimo día de mes, por ejemplo el 31 de agosto. Con esta fecha toma como valor para fechafin "20090832", es decir, el dia 32 con lo cual me da un error de fuera de rango. Para solucionarlo le quito el uno que le sumaba pero claro, entonces de olvida del dia 31 y me hace la select hasta el 30. Con la fechainicio no hay problema, no hay que sumarle nada.

Alguien me puede ayudar, por favor?

Ejemplo:
Código:
SELECT *
FROM Trans_Servicios 
WHERE Sol_Organization = 'XXX' 
AND (fecha_captado BETWEEN '20090801' AND '20090832') 
ORDER BY IdServicio;
Lo mismo me da con between o con >= y <=
Código:
SELECT *
FROM Trans_Servicios 
WHERE Sol_Organization = 'XXX' 
AND fecha_captado >= '20090801' AND fecha_captado <= '20090832
ORDER BY IdServicio;
Muchas gracias.
  #2 (permalink)  
Antiguo 25/09/2009, 08:39
 
Fecha de Ingreso: noviembre-2006
Ubicación: México
Mensajes: 866
Antigüedad: 17 años, 5 meses
Puntos: 8
Respuesta: Error en consulta con fechas

Para agregar días, meses, años, etc, existe la función DATEADD, la cual al sumarles un día a una fecha te devuleve otra fecha(válida):

SET fecha = DATEADD(day, 1, fecha)

Saludos.
  #3 (permalink)  
Antiguo 25/09/2009, 08:40
 
Fecha de Ingreso: noviembre-2006
Ubicación: México
Mensajes: 866
Antigüedad: 17 años, 5 meses
Puntos: 8
Respuesta: Error en consulta con fechas

Para agregar días, meses, años, etc, existe la función DATEADD, la cual al sumarles un día a una fecha te devuleve otra fecha(válida):

SET fecha = DATEADD(day, 1, fecha)

Saludos.
  #4 (permalink)  
Antiguo 25/09/2009, 08:55
 
Fecha de Ingreso: mayo-2003
Mensajes: 70
Antigüedad: 21 años
Puntos: 0
Respuesta: Error en consulta con fechas

ok, muchas gracias por tu ayuda. Me sirvio de pleno.
  #5 (permalink)  
Antiguo 25/09/2009, 12:04
Avatar de iislas
Colaborador
 
Fecha de Ingreso: julio-2007
Ubicación: Mexico, D.F.
Mensajes: 6.482
Antigüedad: 16 años, 9 meses
Puntos: 180
Respuesta: Error en consulta con fechas

Es un error SUMAR o RESTAR directamente numeros a fechas, para eso esta DATEADD()..

Es una mala practica, utilizar BETWEEN para comparar rangos de fechas.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 09:33.