Datumswert SQL konform konvertieren

Sie möchten nach einem bestimmten Datumseintrag suchen. Ausgangsbasis ist ein Datenbankfeld vom Typ Date. NexusDB z.B. erwartet die Abfrage dann wie folgt

select * from mytable where Datumsfeld=Date’Jahr-Monat-Tag‘

Nun liegt der Datumswert aber z.B. wie folgt in der Tabelle mit einem Feld vom Typ Datum vor:

11.08.2005 und damit kann Nexus leider nichts anfangen.

Folgende Funktion überführt nun diesen Datumsausdruck in den von NexusDB erwarteten Format:

function ConvertDateToSqlDate(datum:TDate):String;
var monat,tag:String;
begin
monat:=IntToStr(MonthOf(datum));
IF length(monat)=1 then monat:=’0’+monat;
tag:=IntToStr(DayOf(datum));
IF length(tag)=1 then tag:=’0’+tag;
ConvertDateToSqlDate:=IntToStr(YEarOf(datum))+‘-‚+monat+‘-‚+tag;
end;

Aus 11.08.2005 wird dann 2005-08-11

Der ganze Ausdruck heisst dann z.B. in Delphi

’select * from mytable where datumsfeld=date’+QuotedStr(ConvertDateToSqlDate(mytable.datefield));

was dann wie folgt im Klartext aussieht:

select * from mytable where datumsfeld=date’2007-08-11′

Bei anderen Datenbanken kann dies ähnlich oder auch anders sein, aber vielleicht hilft Ihnen die obige Vorgehensweise auch in ähnlichen Fällen mit ein klein wenig Anpassung.

Noch einfacher geht das Ganze übrigens wie folgt :

function ConvertDateToSqlDate(datum:TDate):String;
begin
Re
sult := SysUtils.FormatDateTime(‚yyyy“-„mm“-„dd‘, Datum);
end

Werbung & Infos:

sevdesk Online-Buchhaltungsevdesk Angebot – Online-Buchhaltung 60% günstiger, exklusiver Gutschein

Bei sevdesk kann man aktuell  wieder  60% sparen!

Jetzt 60% Rabatt hier bei sevdesk auf alle Tarife mit 24 Monaten Laufzeit sichern


Aktuelles Bitdefender Angebot


Verwandte Themen: