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

[SOLUCIONADO] Error con where en fecha

Estas en el tema de Error con where en fecha en el foro de SQL Server en Foros del Web. Buenas estimados, saben que estoy usando una simple condicion de busqueda por fecha y cuando pongo asi no funciona: @import url("http://static.forosdelweb.com/clientscript/vbulletin_css/geshi.css"); Código SQL: Ver original ...
  #1 (permalink)  
Antiguo 22/04/2013, 07:36
 
Fecha de Ingreso: noviembre-2009
Mensajes: 381
Antigüedad: 14 años, 5 meses
Puntos: 6
Error con where en fecha

Buenas estimados,

saben que estoy usando una simple condicion de busqueda por fecha y cuando pongo asi no funciona:
Código SQL:
Ver original
  1. AND DATE >= CONVERT(DATETIME, '20130418', 112)
  2. AND DATE <= CONVERT(DATETIME, '20130418', 112)

Entiendo que si pongo las mismas fechas deberia dar como resultado las cargas del dia?

Gracias!
Gustav.

Última edición por gnzsoloyo; 22/04/2013 a las 11:27
  #2 (permalink)  
Antiguo 22/04/2013, 08:16
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 17 años, 8 meses
Puntos: 774
Respuesta: Error con where en fecha

primero porque no usas between para comparar fechas? segunda tus fechas almacenadas estan en el formato que manejas? o estan en formato de fecha completo?(horas y minutos)
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #3 (permalink)  
Antiguo 22/04/2013, 10:50
 
Fecha de Ingreso: noviembre-2009
Mensajes: 381
Antigüedad: 14 años, 5 meses
Puntos: 6
Respuesta: Error con where en fecha

Buenas Libras y muchas gracias por responder.

Mira, no uso el between porque es un sistema ya creado y funciona asi como está, la verdad no pensé en modificarlo.

Antes tenia '<' '>' unicamente, al agregarle '<=' '>=' algunas consultas funcionan y otras no.

El formato esta completo porque cuando la conversion es 112 espera aaaammdd.
Tal como esta puesto desdephp.-

Saludos!
Gustav.
  #4 (permalink)  
Antiguo 22/04/2013, 11:36
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 5 meses
Puntos: 2658
Respuesta: Error con where en fecha

Cita:
Entiendo que si pongo las mismas fechas deberia dar como resultado las cargas del dia?
No exactamente.
Generalmente, cuando sólo indicas la fecha, sin la hora, los DBMS asumen hora cero (00:00:00), porque no tienen ese dato de comparación, ergo, estás consultando un valor que esté entre el 18/04/2013 00:00:00 y el 18/04/2013 00:00:00... Lo cual evidentemente no tiene mucho sentido, si los datos también llevan horas. Y si no las llevan, usar un rango carece de sentido.
Creo que lo que tienes que hacer es considerar que el rango incluya de forma implícita las horas:
Código SQL:
Ver original
  1. AND DATE >= CONVERT(DATETIME, '20130418', 112)
  2. AND DATE < CONVERT(DATETIME, '20130419', 112)
Cita:
no uso el between porque es un sistema ya creado y funciona asi como está,
No se entiende el argumento. Si el funciona como está, no implica que funcione bien. Sólo que funciona...
Si puedes modificar la forma de parametrizar la fecha, bien puedes cambiarla por un BETWEEN, no hay nada que te lo impida, y es probable que ganes en performance.
Dos consultas que apuntan al mismo rango, pero con clausulas diferentes, pueden usar algoritmos internos distintos para obtener el resultado. Eso es algo que se ve solamente con el analizador de consultas.
yo te sugeriría que pruebes ambos casos sobre tu base y veas cuál es la que SQL Server resuelve con mejor método. Y si el campo usado es un DATETIME y está indexado, te sugiero que no uses sólo la fecha, sino que tome también la hora.... Es posible que cambie la solución del analizador.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #5 (permalink)  
Antiguo 23/04/2013, 14:53
 
Fecha de Ingreso: noviembre-2009
Mensajes: 381
Antigüedad: 14 años, 5 meses
Puntos: 6
Respuesta: Error con where en fecha

Muchisimas gracias por toda la info,

Saludos,
Gustav.

Etiquetas: fecha, funcion
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 06:28.