Если не ставить перед часами две цифры, похоже, это может быть проблемой, если однозначно сделать это днем, вы получите результат.
/*------------------------
SELECT DATEDIFF(Hour,'2018-11-20 14:26:38.000','2018-11-22 11:00:29.367')
------------------------*/
45
Ваш формат даты и времени по умолчанию, вероятно, равен 12 часам,и «2:…» обрабатывается как pm.
Использование двух цифр для часа должно помочь.
/*------------------------
SELECT DATEDIFF(Hour,'2018-11-20 02:26:38.000','2018-11-22 11:00:29.367')
------------------------*/
57
(SQL Server имеет большую обратную совместимость, которая может быть вызванаввод не отформатирован точно, форматы даты / времени ISO всегда используют две цифры для часов, минут и секунд.)
Если вы используете клиент (а не фиксированный код в сохраненном процессе / функции / триггере)/…) Параметризация ваших запросов позволяет избежать этой проблемы: передавать данные как тип даты-время напрямую, без необходимости преобразования в строку.