Hallo,
Wo wird da "von einem Wert x ein größerer Wert x+n" abgezogen?
Da, wo die Spalte "Datum" einen Zeitpunkt enthält, der nach dem 11. Februar diesen Jahres liegt.
Nach nochmaligem Lesen des Ausgangspostings, speziell:
$von = "2005-03-11 00:00:00";
$tage = "10";
... select * from table WHERE TO_DAYS('$von') - TO_DAYS(Datum) <= $tage ...
Klappt echt gut,
Aber wenn ich von auf "2005-02-11..." setze
gebe ich zu, dass ich mich geirrt habe. Ich ging davon aus, dass
die Aussage "In diesem Zeitraum gab es noch gar keine Einträge." sich auf zukünftige Datumswerte, also NULL-Werte im Feld Datum, bezog. Er fragt ja aber in $von ein vergangenes Datum ab und es gibt offensichtlich gar keine NULL-Werte im Feld Datum. Damit lieferen natürlich alle Werte in Datum, die später als $von sind, bei TO_DAYS('$von') - TO_DAYS(Datum) negative Werte, die dann _immer_ <= 10 sind.
Offensichtlich wird alles außer 0, also auch NULL, hinter WHERE als true betrachtet.
Hm, das halte ich für ein Gerücht.
Ist es auch. Getestet unter MySQL 4.0.18 ergibt:
TO_DAYS(NULL) -> NULL
1 - NULL -> NULL
NULL <= 10 -> NULL
aber
WHERE NULL
immer ein leeres Resultset.
viele Grüße
Axel