Error muy comun con between en mysql
septiembre 25th, 2009 by David Rodriguez
Cuando hacemos una comparación de fechas en Mysql, es muy facil cometer un error que puede no verse reflejado en las pruebas que se hagan.
SELECT * FROM tabla WHERE fecha BETWEEN ’2009-09-01′ AND ’2009-09-30′ ;
Esta consulta algunas veces dará resultados válidos y otros invalidos. El problema es que si el campo fecha es un campo TIMESTAMP, no hace la comprobación unicamente por la fecha como nosotros queremos.
Para asegurarnos que hace la comparación unicamente con la fecha debemos añadir el comando DATE.
La consulta correcta sería :
SELECT * FROM tabla WHERE DATE(fecha) BETWEEN ’2009-09-01′ AND ’2009-09-30′ ;
Posts relacionados
This entry was posted on Viernes, septiembre 25th, 2009 at 10:03 am and is filed under Base de datos, Internet. You can follow any responses to this entry through the RSS 2.0 feed. You can leave a response, or trackback from your own site.
diciembre 20th, 2009 at 3:56 am
Pues si, muy comun, gracias por la ayuda….
junio 10th, 2010 at 4:15 pm
Pues muchas gracias, me fue de mucha utilidad
agosto 30th, 2010 at 8:53 pm
Muchas gracias, bueno saberlo!
diciembre 10th, 2010 at 9:08 am
Gracias me fue de mucha utilidad
diciembre 29th, 2010 at 12:35 am
Muchisimas gracias!! me haz ayudado muchisimo
marzo 15th, 2011 at 4:44 pm
gracias tenia un error y lo solucione con tu ayuda
marzo 25th, 2011 at 8:02 pm
Un dato muy util para los que tuvimos el problema de hacer consultas entre fechas y no poder visualizar los resultados de la ultima fecha
abril 6th, 2011 at 12:54 am
yo hago lo siguiente SELECT * FROM tabla WHERE fecha BETWEEN ’2009-09-01 00:00:01′ AND ’2009-09-30 23:59:59′ ;
que podria ser el equivalente sin poner el date y que ademas permite seleccionar de determinada hora como cuando necesitas hacer un corte a medio dia
agosto 10th, 2011 at 6:12 pm
la consulta seria sin apostrofes…
SELECT * FROM factura
wHERE DATE(FechaFacturo) BETWEEN 2011-07-30 AND 2011-08-09
Hey amigos… cuidado con los apostrofes las consultas van sin apastrofes, bueno al menos en esta version de mysql….me funciono… gracias. alos que postearon …
agosto 10th, 2011 at 6:27 pm
Nuevamente entre al blog de rodriges para corregir. Bueno en el Programa Mysql Workbeach fue la siguiente consulta:
SELECT * FROM factura
wHERE DATE(FechaFacturo) BETWEEN ’2011-07-30 00:00:00′ AND ’2011-08-09 00:00:00′
y funciono de maravilla ahora solo se la envio desde visual basic y haber que pasa, despues les comento…
agosto 10th, 2011 at 6:30 pm
bueno, aqui el apostrofe que se ve el blog es invertido(’),supongo q es por el idioma de las tablas de la base de datos en linea. pero este si me funciono en las consultas: (‘)
septiembre 29th, 2011 at 2:40 pm
Excelente.
yo estaba agregando un dia mas a la fecha final de la consulta con el “date_add()”.
Lo que indicas es mejor, gracias