Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Warning: Incorrect date value

1 view
Skip to first unread message

Burkhard Schultheis

unread,
Mar 4, 2019, 2:56:03 PM3/4/19
to
Ich habe hier eine Abfrage, für die ich eine Warnung bekomme, die ich
nicht verstehe. Ich will Daten für den Februar abfragen und benutze
dafür den Ausdruck "WHERE date LIKE "2019-02-%". Die Spalte heißt "date"
und ist vom Typ "DATE". Was ist an der Abfrage denn falsch?

Grüße
Burkhard

Claus Reibenstein

unread,
Mar 5, 2019, 3:31:59 AM3/5/19
to
DATE ist kein String, sondern ein Datum, kann daher nicht mit LIKE
gefiltert werden.

Gruß
Claus

Axel Schwenke

unread,
Mar 5, 2019, 4:23:43 AM3/5/19
to
Doch, kann es. Es wird nur nicht sonderlich schnell, denn MySQL wird es als
Scan ausführen und dabei für jede Zeile den DATE Wert in einen String
konvertieren und den dann mit LIKE mit dem Suchstring vergleichen. Die
bessere Variante verwendet BETWEEN, um alle Zeilen vom Februar zu finden:

SELECT ... WHERE date BETWEEN '2019-02-01' AND '2019-02-28';

oder auch

SELECT ... WHERE date >= '2019-02-01' AND date < '2019-03-01';

(man beachte das >= aber <)

Beide Varianten könnten einen Index auf der Spalte `date` nutzen.


@Bernhard: das Problem dürfte weniger deine Query sein, sondern was in der
Tabelle steht. Wahrscheinlich hast du da eine Zeile mit einem kaputten Datum
wie z.B. dem 30. Februar.

Zeig halt mal deine ganze Query und die ganze Fehlermeldung und die Zeilen
aus deiner Tabelle für den Februar.

0 new messages