MySQL Tabellenspalte mit Datum als String in Timestamp umwandeln und vergleichen?
Hi! Ich möchte von meiner Tabelle in einer Datenbank alle Zeilen ausgeben lassen, bei denen das Datum (steht in der Spalte datum) älter ist, als ein Datum das vorher in ein Formular eingegeben wird. Das Datum in der Tabellenspalte liegt als VARCHAR vor, also als String. Das Datum aus dem Formular liegt ebenfalls als String vor.
Da PHP aber die Daten so nicht vergleichen kann, habe ich das Datum aus dem Formular mit $wert = strtotime($wert); in einen Timestamp umgewandelt.
Kann ich jetzt irgendwie im mysql query bestimmen, dass die Spalte datum, bevor verglichen ob diese älter als das Datum (bzw. der Timestamp) in der Variable $wert ist, zuerst in einen Timestamp umgewandelt wird??
Folgendes funktionierte nicht:
$result = mysql_query("SELECT * FROM tabelleA WHERE strtotime(datum) < \"$wert\" ");
Danke!
2 Antworten
Entweder du wandelst das Formularfeld UND den aus MySQL gelesenen "Datumstring" in nen Timestamp um, ODER du machst es einfach richtig:
MySQL Spalte sollte vom Typ DATETIME oder TIMESTAMP sein. Dann kannst du auch im SQL Query gleich vergleichen.
Bsp:
SELECT * FROM `tabelleA` WHERE `datum` < '2016-05-01'
Kann ich denn einen Timestamp mit einer DATETIME Spalte vergleichen oder muss beides Timestamp sein?
http://stackoverflow.com/questions/8587177/string-to-timestamp-in-mysql#answers-header
STR_TO_DATE
bzw.
UNIX_TIMESTAMP( STR_TO_DATE ( ... ) )