select *
from dbo.March2010 A
where A.Date >= Convert(datetime, '2010-04-01' )
In Ihrer Abfrage 2010-4-01
wird als mathematischer Ausdruck behandelt, also lautet es im Wesentlichen
select *
from dbo.March2010 A
where A.Date >= 2005;
(2010 minus 4 minus 1 is 2005
Konvertieren in eine richtige datetime
, und die Verwendung von einfachen Anführungszeichen behebt dieses Problem.)
Technisch könnte der Parser Ihnen erlauben, mit
davonzukommenselect *
from dbo.March2010 A
where A.Date >= '2010-04-01'
Es übernimmt die Konvertierung für Sie, ist aber meiner Meinung nach weniger lesbar als die explizite Konvertierung in ein DateTime
für den Wartungsprogrammierer, der nach Ihnen kommt.