select *
from dbo.March2010 A
where A.Date >= Convert(datetime, '2010-04-01' )
I din forespørgsel, 2010-4-01
behandles som et matematisk udtryk, så i det væsentlige lyder det
select *
from dbo.March2010 A
where A.Date >= 2005;
(2010 minus 4 minus 1 is 2005
Konvertering til en korrekt datetime
, og brug af enkelte anførselstegn vil løse dette problem.)
Teknisk set kan parseren give dig mulighed for at slippe afsted med
select *
from dbo.March2010 A
where A.Date >= '2010-04-01'
den vil udføre konverteringen for dig, men efter min mening er den mindre læsbar end eksplicit at konvertere til en DateTime
for vedligeholdelsesprogrammøren, der kommer efter dig.