Nature inclusive de l'opérateur "BETWEEN" de MS SQL Server
L'opérateur BETWEEN de MS SQL Server inclut-il les limites de plage ? En d'autres termes, la requête suivante :
SELECT foo FROM bar WHERE foo BETWEEN 5 AND 10
sélectionne-t-elle des valeurs qui sont exactement 5 et 10, ou ces valeurs sont-elles exclues de la plage ?
Réponse :
L'opérateur BETWEEN dans MS SQL Server est inclusif, ce qui signifie qu'il inclut à la fois les valeurs de début et de fin dans la plage spécifiée. Par conséquent, la requête ci-dessus sélectionnera les lignes où la colonne foo a des valeurs comprises entre 5 et 10 inclus.
Depuis Books Online :
BETWEEN renvoie TRUE si la valeur de test_expression est supérieur ou égal à la valeur de begin_expression et inférieur ou égal à la valeur de end_expression.
DateTime Avertissement :
Lorsque vous travaillez avec DateTimes, il est important de noter que si seule une date est fournie, la valeur est traitée comme minuit ce jour-là. Pour éviter de manquer des heures dans la date de fin ou de dupliquer la capture de données pour les données du jour suivant, il est recommandé de soustraire 3 millisecondes à la date de fin. En effet, toute valeur inférieure à 3 millisecondes sera arrondie à minuit le lendemain.
Exemple :
Pour obtenir toutes les valeurs de juin 2016, utilisez ce qui suit requête :
where myDateTime between '20160601' and DATEADD(millisecond, -3, '20160701')
Cela se traduit to :
where myDateTime between '20160601 00:00:00.000' and '20160630 23:59:59.997'
datetime2 et datetimeoffset :
Soustraire 3 ms d'une date peut entraîner des lignes manquantes dans la fenêtre de 3 ms. La solution la plus efficace est d'utiliser les opérateurs suivants :
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!