Tach!
WHERE DATE(haltbar_bis_jahr, haltbar_bis_monat, haltbar_bis_tag) > NOW() + INTERVAL 6 WEEK
dieses Format stimmt leider nicht. Wenn ich dieses im phpMyAdmin ausführe, erhalte ich folgende Meldung
#1064 - Fehler in der SQL-Syntax. Bitte die korrekte Syntax im Handbuch nachschlagen bei ' haltbar_bis_monat, haltbar_bis_tag) > NOW() + INTERVAL 6 WEE LIMIT 0, 25' in Zeile 1
Die Antwort, die dir gegeben wurde, ist also nicht die richtige. Kann ja mal vorkommen.
Wo hast du das Beispiel her? Auf https://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html finde ich nichts passendes.
Stimmt. Ich dachte erst MAKEDATE() wäre die dazu passende Funktion, aber nein. Ich finde da auch keine Funktion, die aus drei Werten einen Datumswert erzeugt. Da bleibt nur der Umweg, ein Datumsliteral zu erstellen, also einen String im Format 'YYYY-MM-DD'.
Das kann aber nicht die Lösung sein, denn wenn du auf diese Weise erstmal ein Datum erzeugen musst, um es dann mit den anderen Funktionen auswerten zu können, ist das sehr langsam, weil das für jeden Datensatz extra getan werden muss und kein Index die Suche beschleunigen kann. Das nennt man auch Full-Table-Scan, und sowas will man mit zunehmender Anzahl Datensätze auf jeden Fall vermeiden. Bau lieber deine Tabellenstruktur so um, dass ein echtes Datum gespeichert wird.
dedlfix.