select *
from dbo.March2010 A
where A.Date >= Convert(datetime, '2010-04-01' )
In uw zoekopdracht, 2010-4-01
wordt behandeld als een wiskundige uitdrukking, dus in wezen luidt het
select *
from dbo.March2010 A
where A.Date >= 2005;
(2010 minus 4 minus 1 is 2005
Het converteren naar een juiste datetime
, en het gebruik van enkele aanhalingstekens lost dit probleem op.)
Technisch gezien kunt u met de parser wegkomen met
select *
from dbo.March2010 A
where A.Date >= '2010-04-01'
het zal de conversie voor je doen, maar naar mijn mening is het minder leesbaar dan expliciet converteren naar een DateTime
voor de onderhoudsprogrammeur die na u komt.