select *
from dbo.March2010 A
where A.Date >= Convert(datetime, '2010-04-01' )
Dalam kueri Anda, 2010-4-01
diperlakukan sebagai ekspresi matematis, jadi pada intinya terbaca
select *
from dbo.March2010 A
where A.Date >= 2005;
(2010 minus 4 minus 1 is 2005
Mengubahnya menjadi datetime
proper yang tepat , dan menggunakan tanda kutip tunggal akan memperbaiki masalah ini.)
Secara teknis, pengurai memungkinkan Anda untuk lolos
select *
from dbo.March2010 A
where A.Date >= '2010-04-01'
itu akan melakukan konversi untuk Anda, tetapi menurut saya itu kurang mudah dibaca daripada secara eksplisit mengonversi ke DateTime
untuk programmer pemeliharaan yang akan datang setelah Anda.