Ich versuche:
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 eine Referenz dafür geben, warum?
Ich versuche:
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 eine Referenz dafür geben, warum?
Antworten:
select *
from dbo.March2010 A
where A.Date >= Convert(datetime, '2010-04-01' )
Wird in Ihrer Abfrage 2010-4-01
als mathematischer Ausdruck behandelt , lautet er also im Wesentlichen
select *
from dbo.March2010 A
where A.Date >= 2005;
( 2010 minus 4 minus 1 is 2005
Wenn Sie es in ein richtiges Format konvertieren datetime
und einfache Anführungszeichen verwenden, wird dieses Problem behoben.)
Technisch gesehen können Sie mit dem Parser möglicherweise davonkommen
select *
from dbo.March2010 A
where A.Date >= '2010-04-01'
Es wird die Konvertierung für Sie durchführen, aber meiner Meinung nach ist es weniger lesbar als die explizite Konvertierung in ein DateTime
Programm für den Wartungsprogrammierer, das nach Ihnen kommt.
SET LANGUAGE FRENCH
. :-) Für dieses Datum erhalten Sie den 4. Januar anstelle des 1. April. Für andere Daten wird möglicherweise stattdessen eine Fehlermeldung angezeigt.
CONVERT(datetime, '20100401 10:01:01')
- Das Bestehen des 01.04.2010 funktioniert in SQL Server Management Studio, jedoch nicht beim Senden der SQL-Anweisung über PHP / MSSQL.
Versuchen Sie, Ihr Datum in eine Zeichenfolge einzufügen.
select *
from dbo.March2010 A
where A.Date >= '2010-04-01';
Wir können wie unten auch verwenden
SELECT *
FROM dbo.March2010 A
WHERE CAST(A.Date AS Date) >= '2017-03-22';
SELECT *
FROM dbo.March2010 A
WHERE CAST(A.Date AS Datetime) >= '2017-03-22 06:49:53.840';
DateTime start1 = DateTime.Parse(txtDate.Text);
SELECT *
FROM dbo.March2010 A
WHERE A.Date >= start1;
Konvertieren Sie zuerst TexBox in die Datetime und verwenden Sie dann diese Variable in der Abfrage