Ich versuche es:
SELECT *
FROM dbo.March2010 A
WHERE A.Date >= 2010-04-01;
A.Date
sieht so aus: 2010-03-04 00:00:00.000
Dies funktioniert jedoch nicht.
Kann jemand einen Hinweis darauf geben, warum?
Ich versuche es:
SELECT *
FROM dbo.March2010 A
WHERE A.Date >= 2010-04-01;
A.Date
sieht so aus: 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 Anfrage, 2010-4-01
wird wie ein mathematischer Ausdruck behandelt, so dass er im Wesentlichen lautet
select *
from dbo.March2010 A
where A.Date >= 2005;
( 2010 minus 4 minus 1 is 2005
Die Umwandlung in eine richtige datetime
und die Verwendung einfacher Anführungszeichen behebt dieses Problem).
Technisch gesehen könnte der Parser Ihnen erlauben, mit
select *
from dbo.March2010 A
where A.Date >= '2010-04-01'
wird die Konvertierung für Sie durchgeführt, aber meiner Meinung nach ist es weniger lesbar als die explizite Konvertierung in eine DateTime
für den Wartungsprogrammierer, der nach Ihnen kommen wird.
In Ihrer Abfrage haben Sie das Datum nicht in einfache Anführungszeichen gesetzt. Das war das Problem. Wie auch immer, Sie können eine der folgenden Abfragen verwenden, um das Datum zu vergleichen
SELECT *
FROM dbo.March2010 A
WHERE A.Date >= '2010-04-01';
SELECT *
FROM dbo.March2010 A
WHERE A.Date >= CAST('2010-04-01' as Date);
SELECT *
FROM dbo.March2010 A
WHERE A.Date >= Convert(datetime, '2010-04-01' )
CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.