Entwickler-Ecke

Datenbanken - SQL-Abfrage : Datum


dm - Do 24.10.02 13:13
Titel: SQL-Abfrage : Datum
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 - Do 24.10.02 13:26

Hi
dm hat folgendes geschrieben:

Hat jemand ne Idee ?

Ja! :D


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


Gruss Lothar


dm - Do 24.10.02 14: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 - Do 24.10.02 15: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:

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


Gruß
Klabautermann


LCS - Fr 25.10.02 07: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


Alfons-G - Fr 25.10.02 17: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: