Dai un'occhiata a Come Le date sono archiviate in SQL Server? e Come Tra funziona con le date in SQL Server?
Se questo è un smalldatetime ha una precisione di 1 minuto, quindi se arrotonda per eccesso, per datetime è 300 millisecondi
esempio
DECLARE @d DATETIME
SELECT @d = '2001-12-31 23:59:59.999'
SELECT @d
01-01-2002 00:00:00.000
DECLARE @d DATETIME
SELECT @d = '2001-12-31 23:59:59.998'
SELECT @d
31-12-2001 23:59:59.997
Usa sempre meno del giorno successivo a mezzanotte, nel tuo caso
< '20100401'