Mysql
 sql >> Base de données >  >> RDS >> Mysql

MySQL - BETWEEN ne sélectionnera pas les résultats corrects

Voir ceci connexe question.

Comme d'autres l'ont mentionné, votre principal problème n'est pas de tenir compte du temps. Quelques options pour gérer cela :

  1. Utilisez une fonction pour convertir DateTime en Date. Je ne recommande pas cette option, car elle rendra probablement la fonction non sargeable .

  2. Développez votre BETWEEN pour inclure explicitement le dernier moment de la journée :(note :il s'agit de la dernière valeur possible que MS SQL peut stocker, je ne sais pas si MySQL a la même valeur)

    SELECT * FROM `punches` WHERE `date` 
    BETWEEN '08/20/11 00:00:00.000' AND '08/31/11 23:59:59.997'
    
  3. Utiliser un < pour la valeur supérieure

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

Je pense en fait que ce dernier est plus facile, dans la plupart des situations.

Je suppose que vous pourriez faire d'autres choses, comme changer le type de données de la colonne, mais j'ai supposé ici que vous vouliez juste changer la requête.

** Avis de non-responsabilité :je suis un gars MS SQL, pas MySQL