Wie kann ich in SQL Server alle Daten abfragen, die größer als ein bestimmtes Datum sind?

Ich versuche es:

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

A.Date sieht aus wie: 2010-03-04 00:00:00.000

Dies funktioniert jedoch nicht.

Kann jemand einen Hinweis darauf geben, warum?

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

In Ihrer Abfrage wird 2010-4-01 als mathematischer Ausdruck behandelt, so dass sie im Wesentlichen lautet

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

(2010 minus 4 minus 1 ist 2005) Durch die Umwandlung in eine korrekte "Datumsangabe" und die Verwendung von einfachen Anführungszeichen wird dieses Problem behoben).

Technisch gesehen könnte der Parser Ihnen erlauben, mit

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

zu konvertieren, aber meiner Meinung nach ist das weniger lesbar als eine explizite Konvertierung in eine DateTime für den Wartungsprogrammierer, der nach Ihnen kommen wird.

Kommentare (4)

Versuchen Sie, Ihr Datum in eine Zeichenkette einzuschließen.

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

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

Konvertieren Sie zuerst TexBox in Datetime und verwenden Sie diese Variable in der Abfrage

Kommentare (0)