Steve Jones points out a bit of rounding math:
Imagine that I have someone enter a value for the number of hours to include in a report. I enter 5 and the report divides this in half to go back 2.5 hours and forward 2.5 hours. I run this code at the top of my code block:
Click through for Steve’s example. This ultimately has to do with integer division. If you run the following code, you’ll still get 2 as the result:
SELECT CAST(5.99 / 2) AS INT;
This is because SQL Server discards the decimal during integer casting. DATEADD()
simply works with the end result, post-cast.