Récupération de plage inclusive avec l'opérateur "BETWEEN" de MS SQL Server
Lors de l'utilisation de l'opérateur "BETWEEN" de MS SQL Server, il est essentiel de comprendre si les limites de la plage sont incluses ou exclues dans les critères de sélection.
Pour répondre à la question spécifique, le L'opérateur "BETWEEN" est inclusif. Cela signifie que, par défaut, les valeurs spécifiées comme limites inférieure et supérieure sont incluses dans le jeu de résultats. Dans l'exemple fourni :
SELECT foo FROM bar WHERE foo BETWEEN 5 AND 10
La requête sélectionnera toutes les lignes où la valeur de la colonne "foo" est comprise entre (et inclus) 5 et 10.
Cependant, ce comportement inclusif peut présenter une mise en garde lorsque vous travaillez avec DateTimes. Par défaut, lorsqu'une seule date est spécifiée, SQL Server la traite comme minuit ce jour-là. Cela signifie que si vous souhaitez capturer toutes les valeurs au cours d'une journée spécifique, vous devez soustraire 3 millisecondes à la date de fin pour éviter que des données manquantes ne tombent dans les 3 millisecondes avant minuit.
Par exemple, pour récupérer toutes les valeurs dans Juin 2016, la requête correcte serait :
where myDateTime between '20160601' and DATEADD(millisecond, -3, '20160701')
Cela garantit que vous capturez toutes les valeurs en juin 2016, y compris celles tombant dans les 3 millisecondes précédant minuit le 30 juin.
Il est important de noter que, même si pour la plupart des types de données, l'opérateur "BETWEEN" est inclusif, il existe des exceptions. Par exemple, avec les types de données "datetime2" et "datetimeoffset", il est généralement recommandé d'utiliser les caractères ">=" et "<" opérateurs au lieu de "BETWEEN" pour éviter d'éventuels problèmes de troncature de plage.
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!