• Aviso Legal
  • About

Bienvenidos al Blog de David Rodriguez

Error muy comun con between en mysql

septiembre 25, 2009 10:03 am / 24 Comments / 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

  • rownum en mysql. numero de lineas por consulta
  • como acceder a mysql con usuario root en plesk
  • Error Mysql 1030 Got error 134 from storage engine
  • configuracion MATCH AGAINST en MySQL para menos de 4 caracteres
  • Optimizacion de consultas sql con lower y trim
Posted in: Base de datos, Internet / Tagged: Base de datos, bd, between, mysql

24 Thoughts on “Error muy comun con between en mysql”

  1. difercm on diciembre 20, 2009 at 3:56 am said:

    Pues si, muy comun, gracias por la ayuda….

  2. Welcorp on junio 10, 2010 at 4:15 pm said:

    Pues muchas gracias, me fue de mucha utilidad

  3. Javichu on agosto 30, 2010 at 8:53 pm said:

    Muchas gracias, bueno saberlo!

  4. Fher on diciembre 10, 2010 at 9:08 am said:

    Gracias me fue de mucha utilidad

  5. Sofia on diciembre 29, 2010 at 12:35 am said:

    Muchisimas gracias!! me haz ayudado muchisimo 😀

  6. marcos on marzo 15, 2011 at 4:44 pm said:

    gracias tenia un error y lo solucione con tu ayuda

  7. alejandro on marzo 25, 2011 at 8:02 pm said:

    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

  8. Hugo on abril 6, 2011 at 12:54 am said:

    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

  9. Otoniel on agosto 10, 2011 at 6:12 pm said:

    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 …

  10. Otoniel on agosto 10, 2011 at 6:27 pm said:

    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…

  11. Otoniel on agosto 10, 2011 at 6:30 pm said:

    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: (‘)

  12. CokoCool on septiembre 29, 2011 at 2:40 pm said:

    Excelente.
    yo estaba agregando un dia mas a la fecha final de la consulta con el «date_add()».
    Lo que indicas es mejor, gracias

  13. Vic on agosto 26, 2012 at 8:00 am said:

    Muchas gracias, me fue de muchisima ayuda, gracias!!

  14. H2TOXIC on agosto 28, 2012 at 5:14 pm said:

    Gracias por la informacion. habia probado otros metodos y este resulto ser el mas sencillo y rapido

  15. Joaquin on abril 11, 2013 at 7:34 pm said:

    Yo todavía no lo he usado, pero mil gracias por tu ayuda…

  16. Luis on abril 25, 2013 at 4:05 am said:

    MUchas gracias, estaba 1 hora con este problem, muchas gracias amigo.

  17. David on agosto 7, 2013 at 3:36 pm said:

    Muchas gracias, es una muy buena ayuda

  18. Enrique on noviembre 19, 2013 at 4:45 pm said:

    Bueno gracias me sirvio a solventar el inconveniente.-

  19. alex vigilio on abril 4, 2014 at 8:28 pm said:

    gracias me sirvio de mucho

  20. Nelson on enero 22, 2015 at 4:51 pm said:

    Aunque el post es viejo, no esta demas aclarar que al hacer date(campo datetime) en el where, el resultado demora mucho mas que si hicieramos : WHERE fecha BETWEEN ’2009-09-01 00:00:01′ AND ’2009-09-30 23:59:59′ ;

  21. orlando quinteros on julio 30, 2016 at 1:55 am said:

    Muchismias gracias, estaba brengando con esto, aqui encontre la solucion, gracias!

  22. c3media on mayo 7, 2017 at 3:06 pm said:

    Muchas gracias, ya no sabía que hacer!

  23. Rafa on diciembre 15, 2017 at 12:12 am said:

    Hasta que encuentro una pagina util. 🙂 Thanks

  24. Cristian Ferney Arboleda Valdes on octubre 3, 2019 at 4:20 pm said:

    Muchas gracias, me sacaste de un apuro.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Post Navigation

← Previous Post
Next Post →

Categorias

  • Base de datos
  • Empresas
  • Internet
  • Mac
  • marketing
  • Otros
  • Prensa
  • Programacion
  • Redes Sociales
  • Retos deportivos
  • Seguridad
  • SEO
  • servidores
  • SPAM
  • Uncategorized
© Copyright 2023 - Blog de David Rodriguez