2017-11-02 1 views
-1

Ich habe ein Feld in meiner Datenbank als TEXT (Ich weiß, ich sollte Datum verwenden, aber dieses Feld könnte mehr Werte als nur Datum haben). Da sie nur ein paar sind, wird es keine Leistung abheben.MySQL Suche als date_format funktioniert nicht

Mein Problem ist die Abfrage, da es immer keine Werte zurückgibt. Aber wenn ich die Abfrage manuell mache, funktioniert es gut. Ich denke es muss etwas mit der Abfrage in vorbereiteten Anweisungen sein aber kann es nicht bekommen.

$date = date("d/m/Y"); 
$query = "SELECT * FROM projects WHERE DATE_FORMAT(expiredate, '%d/%m/%Y') >= DATE_FORMAT(?, '%d/%m/%Y') && id >= (SELECT FLOOR(MAX(id) * RAND()) FROM adsfixed) ORDER BY id LIMIT 1"; 

Die Abfrage eine zufällige Reihe bekommen in Projekten Tabelle sollte, wo Spalt expiredate größer oder gleich als heute in d/m/Y-Format (weiß nicht, ob die Logik in Ordnung ist, so dass ich versuchen, erkläre, was ich brauche).

+0

nicht Strings vergleichen (mit Datum). Sie müssen die Daten vergleichen – Jens

+0

Und wie kann ich es tun, da das Feld Zeichenfolge ist und ich es als Datum suchen muss? – Tiago

+0

Siehe meine Antwort unter – Jens

Antwort

1

die Parameter bisher Konvertieren nicht das Datum an string:

$query = "SELECT * FROM projects WHERE Date(expiredate) >= str_to_date(?, '%d/%m/%Y') && id >= (SELECT FLOOR(MAX(id) * RAND()) FROM adsfixed) ORDER BY id LIMIT 1"; 
+0

Es funktioniert nicht. Auch manuell eingeben. – Tiago

+0

* Es funktioniert nicht. * Bedeutet? Irgendwelche Fehlermeldungen oder falsche Daten? – Jens

+0

Es gibt keinen Wert zurück, aber sollte, da ich einen Datensatz in der Tabelle habe, wo die Verfallsdatum 05/11/2017 ist. – Tiago

Verwandte Themen