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

DATEDIFF() ou BETWEEN pour les plages de dates dans les requêtes SQL

Vos deux requêtes ne sont pas équivalentes. Le datediff la version inclura toutes les valeurs du 01-Jan-2013 quelle que soit l'heure alors que la version intermédiaire n'inclura que les lignes du 01-Jan-2013 où l'heure est 00:00:00 .

Si vous comparez la plage et n'effectuez aucun calcul sur la colonne, votre requête pourra utiliser un index le Something_Date et en même temps inclure toutes les valeurs du 01-Jan-2013 quelle que soit la partie horaire.

where
  SIH.[Something_Date] >= '19700101' and
  SIH.[Something_Date] < '20130102'