Axel Richter: MYSQL DATETIME-Feld Zeitspanne eingrenzen klappt nicht o(

Beitrag lesen

Hallo,

... select * from table WHERE TO_DAYS('$von') - TO_DAYS(Datum) <= $tage ...
Aber wenn ich von auf "2005-02-11..." setze
( aus der Zeit gibt's noch gar keine Datensätze ),
dann liefert MYSQL mir ALLE VORHANDENEN anstatt KEINE ...
was passiert, wenn Du von einem Wert x einen größeren Wert x+n abziehst? Betrachte bei Deiner Antwort bitte besonders den Punkt, ob das Ergebnis kleiner als ein (beliebiger) positiver Wert ist.

Bist Du sicher, dass _dies_ die Ursache für das Verhalten von MySQL ist?

Wie ich das verstanden habe, ist $von ein gültiger Datumswert (11.02.2005) und Datum ein Date-Time-MySQL-Datenfeld mit Inhalt NULL. Dann wäre

... WHERE TO_DAYS('$von') - TO_DAYS(Datum) <= $tage ...
... WHERE TO_DAYS('2005-02-11') - TO_DAYS(NULL) <= $tage ...

Wo wird da "von einem Wert x ein größerer Wert x+n" abgezogen?

Ich denke, es liegt daran, dass der Wert NULL dazu führt, dass der gesamte Ausdruck hinter WHERE zu NULL wird. Offensichtlich wird alles außer 0, also auch NULL, hinter WHERE als true betrachtet. Der Ausdruck WHERE NULL wird also wie WHERE 1 betrachtet. Es werden alle Datensätze ausgeliefert.

viele Grüße

Axel