select *
from dbo.March2010 A
where A.Date >= Convert(datetime, '2010-04-01' )
W zapytaniu 2010-4-01
jest traktowany jako wyrażenie matematyczne, więc w istocie brzmi
select *
from dbo.March2010 A
where A.Date >= 2005;
(2010 minus 4 minus 1 is 2005
Konwertowanie go na właściwą datetime
, a użycie pojedynczych cudzysłowów rozwiąże ten problem.)
Technicznie rzecz biorąc, parser może pozwolić ci ujść na sucho
select *
from dbo.March2010 A
where A.Date >= '2010-04-01'
wykona konwersję za Ciebie, ale moim zdaniem jest mniej czytelny niż jawna konwersja do DateTime
dla programisty serwisowego, który przyjdzie po tobie.