select *
from dbo.March2010 A
where A.Date >= Convert(datetime, '2010-04-01' )
Ve vašem dotazu 2010-4-01
je považováno za matematický výraz, takže v podstatě zní
select *
from dbo.March2010 A
where A.Date >= 2005;
(2010 minus 4 minus 1 is 2005
Převeďte jej na správný datetime
a použití jednoduchých uvozovek tento problém vyřeší.)
Technicky vám může analyzátor umožnit vyhnout se
select *
from dbo.March2010 A
where A.Date >= '2010-04-01'
provede převod za vás, ale podle mého názoru je méně čitelný než explicitní převod na DateTime
pro programátora údržby, který po vás přijde.