select *
from dbo.March2010 A
where A.Date >= Convert(datetime, '2010-04-01' )
En su consulta, 2010-4-01
se trata como una expresión matemática, por lo que en esencia se lee
select *
from dbo.March2010 A
where A.Date >= 2005;
(2010 minus 4 minus 1 is 2005
Convirtiéndolo a un datetime
adecuado y el uso de comillas simples solucionará este problema).
Técnicamente, el analizador podría permitirle salirse con la suya
select *
from dbo.March2010 A
where A.Date >= '2010-04-01'
hará la conversión por usted, pero en mi opinión es menos legible que convertir explícitamente a un DateTime
para el programador de mantenimiento que vendrá después de ti.