Öfters benötigt man Daten in einem bestimmten Datumsbereich oder Intervall aus einer
Tabelle, eine solche Datenmenge lässt sich leicht über SQL-Abfragen erzeugen:
Einige Beispiele wie man dies mit SQL umsetzen kann finden Sie in diesem Beitrag. In vielen Handbüchern oder Blogs findet man leider immer nur SQL pur, aber keine Umsetzung in Delphi, was nicht immer hilfreich ist. Von daher habe ich die Beispiele gleich in der korrekten Delphi-Syntax aufgeschrieben.
(datum ist hierbei das gewünschte Date-Field in der Tabelle mytable, ist der Feldtyp DateTime kommt statt Current_date Current_Timestamp zum Einsatz)
z.B. alle Daten aus einer Tabelle mit einem Datumseintrag älter als heute:
’select * from mytable where datum<Current_date‘;
Alle Daten mit einem Datumsstempel von heute:
’select * from mytable where datum=Current_date‘;
Alle Daten mit einem Datumsstempel von morgen:
’select * from mytable where datum = current_date() + INTERVAL’+QuotedStr(‚1′)+‘ DAY‘;
Alle Daten von gestern:
’select * from mytable where datum = current_date() – INTERVAL’+QuotedStr(‚1′)+‘ DAY‘;
Alle Daten der letzten 7 Tage:
’select * from mytable where Datum >= current_date() – INTERVAL’+QuotedStr(‚7′)+‘ DAY)‘;
Daten, die in einem bestimmten Bereich liegen:
’select * from mytable where datum between Date’+QuotedStr(sdate)+‘ and Date’+QuotedStr(eDate)
*=sdate=von Datum; edate = bis Datum
Achten Sie darauf, dass das Datumsformat für den SQL-Server in der Form YYYY-MM-DD vorliegt, gegebenenfalls muss dieses entsprechend konvertiert werden.
Alle Daten dieses Jahres:
’select * from mytable where EXTRACT(Year FROM datum) = EXTRACT(Year FROM (Current_date())‘;
Alle Daten dieses Monats:
’select * from mytable where EXTRACT(Month FROM datum) = EXTRACT(Month FROM (Current_date())‘;
Alle Daten von Juli:
’select * from mytable where EXTRACT(Month FROM datum) = 7′;
Diese Beispiele sollten eine gute Basis für eigene Abfragen sein. Zu beachten ist, dass nicht immer alle SQL Server eine identische Syntax haben. Von daher sind u.U. Anpassungen notwendig.