sql >> Base de Datos >  >> RDS >> Mysql

MySQL:ENTRE no seleccionará los resultados correctos

Ver esto relacionado pregunta.

Como han mencionado otros, su principal problema es no tener en cuenta el tiempo. Algunas opciones para manejar eso:

  1. Use una función para convertir DateTime en una fecha. No recomiendo esta opción, ya que probablemente hará que la función no sargeable .

  2. Expande tu BETWEEN para incluir explícitamente el último momento del día:(nota:este es el último valor posible que MS SQL puede almacenar, no sé si MySQL tiene el mismo valor)

    SELECT * FROM `punches` WHERE `date` 
    BETWEEN '08/20/11 00:00:00.000' AND '08/31/11 23:59:59.997'
    
  3. Utilice un < para el valor superior

    SELECT * FROM `punches` WHERE `date` >= '08/20/11' AND `date` < '09/01/11'
    

De hecho, creo que el último es más fácil, en la mayoría de las situaciones.

Supongo que podría hacer otras cosas, como cambiar el tipo de datos de la columna, pero he asumido aquí que solo está interesado en cambiar la consulta.

** Descargo de responsabilidad:soy un tipo de MS SQL, no de MySQL