Это из-за дополнительного дня, который не рассчитывается во втором случае.Чтобы объяснить, почему это происходит в вашем первом запросе
SELECT DATEDIFF(DD,'2017-01-01','2018-01-15')
, вы делаете что-то похожее на: 1 - 380 = 379.
В то время как во втором
это (1-365) + (1-15) = 364 + 14 = 378.
В зависимости от того, что вы после
, возможно, было бы лучше разбить его на:
select DATEDIFF( DD,'2017-01-01', '2018-01-01') + DATEDIFF( DD,'2018-01-01', '2018-01-15')