![]() |
Sql Datum vergleich
Hi,
ich habe folgendes Problem: wie kann ich mit Sql ein Datum vergleichen
Delphi-Quellcode:
Danke für die Unterstützungsuch_datum := "13.04.2004"; dm_auftrag.q_selbstbucher.SQL.Text := 'select lanme, lname2, lpz, lort, versand_id, versand_datum from bestellung where ' + ' SUBSTRING( versand_datum from 1 for 10 ) = ' + #34 + such_datum + #34 + ' group by versand_id' ; Gruß Reinhard |
Re: Sql Datum vergleich
Welchen Typ hat das "versand_datum" in der DB ? Und was ist das :
SQL-Code:
:?: Noch nie gesehen. 8)
versand_datum from 1 for 10
|
Re: Sql Datum vergleich
Moin Reinhard :hi:
Liegt Versand_Datum als Datum in der DB vor, dann kann es, wenn die Regionaleinstellungen des DB Servers von denen des Clients abweichen, ganz schnell nach hinten losgehen. Denn bei der implizierten Umwandlung Date->String / String->Date entscheiden nunmal die Regionaleinstellungen. Wenn du das Ganze in der Art wie im Code-Schnipsel machst, dann wird exakt ein Datum mit einem Datum verglichen. Weder der Client noch die DB haben dann noch eine Möglichkeit irgendwelchen Mist zu bauen. (Oft gesehen: Tag & Monat vertauscht)
Delphi-Quellcode:
Var
such_Datum :TDate; //... Begin //... Such_Datum := EncodeDate(2004, 04, 13); With DM_Auftrag.Q_Selbstbucher Do Begin SQL.Text := 'SELECT lName' + #10 + ' ,lName2' + #10 + ' ,lPz' + #10 + ' ,lOrt' + #10 + ' ,Versand_ID' + #10 + ' ,Versand_Datum' + #10 + 'FROM Bestellung' + #10 + 'WHERE Versand_Datum = :i_Such_Datum' + #10 + 'GROUP BY Versand_ID'; // Parsen des Statements um Query Parameter zu finden... Prepared := True; // Werte an Query Parameter übergeben... With Parameters.ParamByName('i_Such_Datum') Do Begin DataType := ftDate; Value := Such_Datum; End; Open; //... End; |
Re: Sql Datum vergleich
Also das versand_datum ist eine DateTime (13.04.2004 18:43:12) Datenfeld
Gruß Reinhard |
Re: Sql Datum vergleich
Habe die lösung selber gefunden !
Das Edit1.text ist das gesuchte Datum (13.04.2004).
Delphi-Quellcode:
Gruß
stag := copy(edit1.Text,0,2);
smonat := copy(edit1.Text,4,2); sjahr := copy(edit1.Text,7,4); dm_auftrag.q_selbstbucher.Close; dm_auftrag.q_selbstbucher.SQL.Text := ' select (lname + " " + lname2) as name, lplz, lort, versand_id from bestellung ' + ' where extract(Day from versand_datum) =' + stag + ' and extract(month from versand_datum) =' + smonat + ' and extract(year from versand_datum) =' + sjahr + ' group by versand_id order by versand_id '; dm_auftrag.q_selbstbucher.Open; Reinhard :coder: |
Re: Sql Datum vergleich
:mrgreen:
Wenn du jetzt noch einen TDateTimePicker nimmst, dann klapt das:
SQL-Code:
Auf die Art muss das Statement durch solche in den String konkatinierte Werte entstellt werden. Außerdem kann der User nur noch gültige Datumswerte angeben. ;)
With DM_Auftrag.Q_Selbstbucher Do
Begin SQL.Text := 'SELECT lName' + #10 + ' ,lName2' + #10 + ' ,lPz' + #10 + ' ,lOrt' + #10 + ' ,Versand_ID' + #10 + ' ,Versand_Datum' + #10 + 'FROM Bestellung' + #10 + 'WHERE Versand_Datum = :i_Such_Datum' + #10 + 'GROUP BY Versand_ID' + #10 + 'ORDER BY Versand_ID'; // Parsen des Statements um Query Parameter zu finden... Prepared := True; // Werte an Query Parameter übergeben... With Parameters.ParamByName('i_Such_Datum') Do Begin DataType := ftDate; Value := DateTimePicker1.Date; End; Open; //... End; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:04 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz