L'opérateur BETWEEN est inclusif.
À partir de Livres en ligne :
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.
Mise en garde concernant la date et l'heure
NB :Avec DateTimes il faut faire attention; si seule une date est indiquée, la valeur est prise à minuit ce jour-là ; Pour éviter de manquer des heures dans votre date de fin ou de répéter la capture des données du jour suivant à minuit dans plusieurs plages, votre date de fin doit être 3 millisecondes avant minuit le jour suivant votre date de fin. 3 millisecondes, car toute valeur inférieure à cette valeur sera arrondie à minuit le lendemain.
par exemple. pour obtenir toutes les valeurs en juin 2016, vous devez exécuter :
where myDateTime between '20160601' and DATEADD(millisecond, -3, '20160701')
c'est-à-dire
where myDateTime between '20160601 00:00:00.000' and '20160630 23:59:59.997'
datetime2 et datetimeoffset
Soustraire 3 ms d'une date vous rendra vulnérable aux lignes manquantes de la fenêtre de 3 ms. La bonne solution est aussi la plus simple :
where myDateTime >= '20160601' AND myDateTime < '20160701'