Hvordan spør jeg etter alle datoer større enn en bestemt dato i SQL Server?

Jeg prøver:

SELECT * 
FROM dbo.March2010 A
WHERE A.Date >= 2010-04-01;

A.Date ser ut som: 2010-03-04 00:00:00.000

Dette fungerer imidlertid ikke.

Kan noen gi en referanse til hvorfor?

Løsning
select *  
from dbo.March2010 A 
where A.Date >= Convert(datetime, '2010-04-01' )

I spørringen din behandles 2010-4-01 som et matematisk uttrykk, så i hovedsak lyder det slik

select *  
from dbo.March2010 A 
where A.Date >= 2005; 

(2010 minus 4 minus 1 er 2005). Hvis du konverterer det til en riktig datetime og bruker enkle anførselstegn, løser du dette problemet).

Teknisk sett kan parseren kanskje tillate deg å slippe unna med

select *  
from dbo.March2010 A 
where A.Date >= '2010-04-01'

det vil gjøre konverteringen for deg, men etter min mening er det mindre lesbart enn å eksplisitt konvertere til en DateTime for vedlikeholdsprogrammereren som kommer etter deg.

Kommentarer (4)

Prøv å legge inn datoen i en tegnstreng.

 select * 
 from dbo.March2010 A
 where A.Date >= '2010-04-01';
Kommentarer (1)
DateTime start1 = DateTime.Parse(txtDate.Text);

SELECT * 
FROM dbo.March2010 A
WHERE A.Date >= start1;

Konverter først TexBox til Datetime og deretter....bruk den variabelen i spørringen

Kommentarer (0)