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?
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.
Versuchen Sie, Ihr Datum in eine Zeichenkette einzuschließen.
select *
from dbo.March2010 A
where A.Date >= '2010-04-01';
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