L'opérateur « Entre » de MS SQL Server inclut-il des limites de plage ?
L'opérateur BETWEEN dans MS SQL Server, comme son nom l'indique, vérifie si une expression donnée se situe dans une plage spécifiée. Cependant, une question courante se pose : cette plage inclut-elle ou exclut-elle les valeurs limites ?
La réponse est que BETWEEN est un opérateur inclusif, ce qui signifie qu'il inclut à la fois les limites inférieure et supérieure de la plage. Pour clarifier :
SELECT foo FROM bar WHERE foo BETWEEN 5 AND 10
Cette requête récupérera les lignes où foo est >= 5 et <= 10, incluant effectivement les valeurs 5 et 10 dans le résultat. Ceci est confirmé par la documentation de Microsoft :
BETWEEN renvoie TRUE si la valeur de test_expression est supérieure ou égale à la valeur de begin_expression et inférieure ou égale à la valeur de end_expression.
Avertissements DateTime
Pour les valeurs DateTime, il y a une considération subtile à garder à l'esprit. Si seule une date est spécifiée, elle est interprétée comme minuit ce jour-là. Pour éviter de manquer ou de dupliquer des valeurs d'heure, il est recommandé d'utiliser une plage qui exclut 3 millisecondes avant minuit à la date de fin.
Par exemple, pour récupérer toutes les valeurs DateTime en juin 2016 :
WHERE myDateTime BETWEEN '20160601' AND DATEADD(millisecond, -3, '20160701')
Cela garantit que la plage s'étend jusqu'à la fin du mois sans inclure les valeurs de juillet 1er.
datetime2 et datetimeoffset
Pour ces types de données, il est plus sûr d'utiliser les options >= et < opérateurs au lieu de BETWEEN. Par exemple :
WHERE myDateTime >= '20160601' AND myDateTime < '20160701'Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!