Does MS SQL Server's "between" include the range boundaries?
Indeed, the BETWEEN operator in SQL Server is inclusive of the range boundaries.
Take as an example: column BETWEEN 1 AND 3
will select values 1, 2, and 3.
The Catch with DateTimes
When using DateTime
or DateTime2
data types, treading carefully around boundaries is a must. Let's say myDate BETWEEN '2023-04-01' AND '2023-04-30'
will include every moment from the break of April 1st to the twilight of April 30th. To eliminate the risk of missing out the very last second of the day records, refrain from setting the upper boundary as 'lastday 23:59:59'.
Precision Play with DATEADD
In scenarios demanding more precision, like recording events at millisecond-level granularity, embrace the DATEADD
function. Adjust the upper boundary as DATEADD(millisecond, -3, 'end_date')
to have the end date 3 milliseconds before midnight of the subsequent day, hence assuring inclusivity.
Simplifying the Queries: The Date-Only Scenario
If the time attribute isn't strictly required, you can eliminate it thereby making your query simpler. Adopting myDate >= 'start_date' AND myDate < 'end_date' + 1
not only covers all dates within the range but also prevents timing complexities.
Foolproof Tips for Effective Queries
Avoid Raindance Around Functions in WHERE Clause
Boosting performance involves avoiding the use of functions in the WHERE
clause which can stifle query execution by rendering your indexes useless.
Ensuring Data Type Consistency
Ensure that your BETWEEN
operator expressions have the same data type. Non-alignment can spring unexpected results or deliver performance lag due to implicit data-type conversions.
Testing is No Jest
It's of paramount importance to authenticate your queries with basic data to assure that the expected records are obtained, especially when dealing with DateTime
boundaries.
The Artful Usage of NOT BETWEEN
If you need your selectiveness to run in the opposite direction, NOT BETWEEN
can be your trusty tool, just bear in mind, it's exclusive of the boundaries.
Was this article helpful?