Sven Rautenberg: Datensatz filtern: Fehler in SQL-Befehl?

Beitrag lesen

Moin!

so doch auch nicht, oder:

Ich wiederhole mich ja nur ungern, aber:
"Lies dieses Posting nochmal, insbesondere das SELECT: [pref:t=51018&m=280134]"

SELECT ID, Vorname, Nachname, Grund, vom, bis
FROM daten WHERE DATE_FORMAT('NOW(), '%d%m%y'); BETWEEN vom AND bis

Aber ich bin gerne noch etwas ausführlicher, wo ich sehe, dass du dich so sonnlos abmühst.

Schritt 1: Definiere alle Spalten deiner Tabelle, die ein Datum enthalten, als DATE-Datentyp. Hierbei kann es dir passieren, dass du sämtliche Daten, die in diesen Spalten stehen, nochmal neu eingeben mußt. Das ist dann Pech - hättest du vermeiden können, indem du gleich den richtigen Datentyp benutzt hättest.

Schritt 2: Wenn du den Typ umgestellt hast, dann kannst du in WHERE-Bedingungen ganz simpel Datumsfelder miteinander vergleichen. Du mußt _dort_ _keine_ Umwandlung in irgendein Darstellungsformat wählen. Die Funktion NOW() beispielsweise liefert immer ein zur Vergleichsspalte passendes Datum zurück, welches direkt in den Vergleich (hier: datum BETWEEN datum1 AND datum2) einfließen kann.

Schritt 3: Da du wahrscheinlich irgendwie auf die Spalten mit den Daten zugreifen willst, um die auszugeben, brauchst du _dann_ die DATE_FORMAT()-Funktion.

Siehe dazu auch nochmal aus dem zitierten Posting:

SELECT DATE_FORMAT(datumspalte,"%d.%m.%Y") as datum FROM tabelle

Ergänzt:
SELECT DATE_FORMAT(bis,"%d.%m.%Y") as enddatum FROM tabelle WHERE NOW() BETWEEN vom AND bis

- Sven Rautenberg

--
ss:) zu:) ls:[ fo:} de:] va:) ch:] sh:) n4:# rl:| br:< js:| ie:( fl:( mo:|