Между 2011-04-16 16:00 и 2011-04-15 00:00 има един ден и 16 часа, следователно вашият DATEDIFF(...)+1
връща (правилно) 1+1 дни.
Проблемът тук е несъответствието между времето, когато гостът пристига/тръгва (около обяд) и времето, когато цената се променя (в полунощ).
Трябва да проверите изискванията си, но вероятно бихте могли да пренебрегнете последния непълен ден и да накарате госта да „напусне“ в 2011-04-15 23:59:59 за целите на изчисляването на тарифата. По същия начин накарайте госта да "пристигне" в 2011-04-14 00:00:00. Допълнителните часове през първия ден ще компенсират липсващите часове през последния ден.