Обнаружил, что при операциях с частями даты и частями времени используется 
разная логика.

Для дат:
DATEDIFF(MONTH, CAST('30.01.2007' AS DATE), CAST('31.01.2007' AS
DATE)) вернет 0, а
DATEDIFF(MONTH, CAST('31.01.2007' AS DATE), CAST('01.02.2007' AS
DATE)) вернет 1. То есть получается сдвиг значения происходит при
смене месяца.

Для времени:
DATEDIFF(HOUR, CAST('01:59:59' AS TIME), CAST('02:59:58' AS
TIME)) вернет 0, а
DATEDIFF(HOUR, CAST('01:59:59' AS TIME), CAST('02:59:59' AS
TIME)) вернет 1. Получается, что считается количество целых часов.

Почему так сделано, кто знает?

Ответить