it-swarm.com.de

Wie frage ich in SQL Server nach allen Daten ab, die älter als ein bestimmtes Datum sind?

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 für warum?

287
Eric Francis
select *  
from dbo.March2010 A 
where A.Date >= Convert(datetime, '2010-04-01' )

In Ihrer Abfrage wird 2010-4-01 als mathematischer Ausdruck behandelt und lautet daher im Wesentlichen

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

(2010 minus 4 minus 1 is 2005 Durch Konvertieren in ein richtiges datetime und Verwenden von einfachen Anführungszeichen wird dieses Problem behoben.)

Technisch gesehen kann der Parser Ihnen erlauben, damit durchzukommen

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 für den Wartungsprogrammierer, der nach Ihnen kommen wird.

415
David

Schließen Sie Ihr Datum in eine Zeichenfolge ein.

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

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';
11
dush88c
DateTime start1 = DateTime.Parse(txtDate.Text);

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

Zuerst konvertieren Sie TexBox in die Datetime, dann ... verwenden Sie diese Variable in der Query

3
Suresh Parmar

Alles in allem lautet die richtige Antwort .....

wählen Sie * aus der Datenbank mit Datum> = '20100401' (Format des Datums JJJJMMTT)

Dies vermeidet Probleme mit anderen Sprachsystemen und verwendet den Index

0
Dan