Dê uma olhada em Como As datas são armazenadas no SQL Server? e Como Entre funciona com datas no SQL Server?
Se for um smalldatetime, ele tem precisão de 1 minuto; portanto, se arredondar, para datetime, será de 300 milissegundos
exemplo
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
Sempre use menos do que no dia seguinte à meia-noite, no seu caso
< '20100401'