Autor Beitrag
dm
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 83



BeitragVerfasst: Do 24.10.02 12:13 
Hallo,

ich möchte mit einer SQL Abfrage jene Datensätze selektieren, bei denen in der Spalte DATUM ein Wert steht, der kleiner als der 10.10.2002 ist.

SELECT * FROM Tabellenname WHERE Datum < 10.10.2002

So sieht mein Befehl aus, funktioniert aber leider nicht.

Hat jemand ne Idee ?

Gruß

Dennis
LCS
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 1305
Erhaltene Danke: 1

WIN 7, WIN 8
Delphi XE5, Delphi XE, Delphi 2007
BeitragVerfasst: Do 24.10.02 12:26 
Hi
dm hat folgendes geschrieben:

Hat jemand ne Idee ?

Ja! :D

ausblenden Quelltext
1:
SELECT * FROM Tabellenname WHERE Datum < '10.10.2002'					


Gruss Lothar

_________________
Der BH ist für die Brust, der Plan ist für'n Ar...
dm Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 83



BeitragVerfasst: Do 24.10.02 13:59 
Danke für den Tip, hab inzwischen ne andere Lösung gefunden :

Bei mir hats mit SELECT ... WHERE DATUM < #dd/mm/yy# funktioniert.

Man muss also # setzen und zwischen Tag, Monat und Jahr keine Punkte, sondern Schrägstriche!
Klabautermann
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Veteran
Beiträge: 6366
Erhaltene Danke: 60

Windows 7, Ubuntu
Delphi 7 Prof.
BeitragVerfasst: Do 24.10.02 14:31 
Hallo,

das Datum als String zu übergeben ist nach meiner Erfahtung immer Problematisch. Häufig (je nach Datenbanlk) hängt die benötigte Formatierung auch von den Aktuellen Windows-Ländereinstellungen ab. Deshalb ist es möglich, das deine Lösung bei dir funktioniert, aber auf dem Rechner des Endanwenders nicht mehr. Da solltest du mal mit den Ländereinstellungen spielen um das zu überprüfen.
Deshalb gehe ich immer über den Umweg der Parameter, damit die DB-Komponente die richtige Formatierung macht. Damit habe ich gute Erfahrungen.

Beispiel:
ausblenden Quelltext
1:
2:
3:
Query.SQL.Add('SELECT ... WHERE DATUM <:MaxDate');
Query.ParamByName('MaxDate').AsDateTime := now;
Query.Open; // bzw. Query.Active := TRUE;


Gruß
Klabautermann


Zuletzt bearbeitet von Klabautermann am Fr 25.10.02 20:19, insgesamt 1-mal bearbeitet
LCS
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 1305
Erhaltene Danke: 1

WIN 7, WIN 8
Delphi XE5, Delphi XE, Delphi 2007
BeitragVerfasst: Fr 25.10.02 06:50 
Klabautermann hat folgendes geschrieben:

das Datum als String zu übergeben ist nach meiner Erfahtung immer Problematisch

Dem kann ich nur zustimmen :roll:, aber allgemein kann man in Deutschland schon ne deutsche Datumseinstellung voraussetzen.

dm hat folgendes geschrieben:

Bei mir hats mit SELECT ... WHERE DATUM < #dd/mm/yy# funktioniert.

Diese Schreibweise ist M$ spezifisch und funktioniert IMHO nur bei Access und M$-SQL.

Gruss Lothar

_________________
Der BH ist für die Brust, der Plan ist für'n Ar...
Alfons-G
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 307

Win XP Prof, Linux, Win 7
D5 Prof, D7 Architect, D2005 Architect, D2007 Architect
BeitragVerfasst: Fr 25.10.02 16:16 
Bei leistungsfähigen SQL-Dialekten (wie z.B. bei Oracle), kann man per SQL ein Datum mit einem übergebenen Formatstring umwandeln. Dieser sagt der Datenbank, welche Teile des Datum-Strings Tag, Monat und Jahr sind. So ist man von der Datumseinstellung im Betriebssystem unabhängig.

:idea:

_________________
Alfons Grünewald