select *
from dbo.March2010 A
where A.Date >= Convert(datetime, '2010-04-01' )
Trong truy vấn của bạn, 2010-4-01
được coi như một biểu thức toán học, vì vậy về bản chất, nó đọc
select *
from dbo.March2010 A
where A.Date >= 2005;
(2010 minus 4 minus 1 is 2005
Chuyển đổi nó thành một datetime
thích hợp và sử dụng các dấu ngoặc kép sẽ khắc phục được vấn đề này.)
Về mặt kỹ thuật, trình phân tích cú pháp có thể cho phép bạn sử dụng
select *
from dbo.March2010 A
where A.Date >= '2010-04-01'
nó sẽ thực hiện chuyển đổi cho bạn, nhưng theo ý kiến của tôi thì nó khó đọc hơn là chuyển đổi rõ ràng thành DateTime
cho lập trình viên bảo trì sẽ đến sau bạn.