So bin ich ein wenig verwirrt. Mein Kunde wählt 01.10.2016 ($ datefrom variable) und 10-02-2016 ($ datumvariable). Wenn er ausgeführt wird, wird es die Daten für das Jahr 2015 zurückkehren und 2016.Ich habe eine MySQL-Datumsformatierung, die alte Datensätze zurückgibt
Hier ist meine PHP-Code:
$datefrom = $mysqli->real_escape_string($_GET['datefrom']);
$dateto = $mysqli->real_escape_string($_GET['dateto']);
$query = "SELECT * FROM tbl_Dates WHERE (DATE_FORMAT(date, '%m-%d-%Y') BETWEEN '$datefrom' AND '$dateto') AND date_type='1'";
Wenn ich die folgende Abfrage in MySQL (nur die Variablen ersetzt):
SELECT * FROM tbl_Dates WHERE (DATE_FORMAT(date, '%m-%d-%Y') BETWEEN '10-01-2016' AND '10-02-2016') AND date_type='1';
Es läuft und gibt sowohl 2015 und 2016 Datumsaufzeichnungen.
Wenn ich die DATE_FORMAT Linien und die Variablen wie folgt ändern:
SELECT * FROM tbl_Dates WHERE (DATE_FORMAT(date, '%Y-%m-%d') BETWEEN '2016-10-01' AND '2016-10-02') AND date_type='1';
Es fein läuft, nur 2016 aktuelle Aufzeichnungen zu geben.
Das System ist etwa ein Jahr alt, LOL, daher gibt es jetzt die Fehler. Wie korrigiere ich die SQL-Syntax, damit sie korrekt abfragt, ohne den PHP-Code in der Zeile mit der% d-% m-% Y-Formatierung ändern zu müssen?
Danke für jede Hilfe euch zur Verfügung stellen kann, Jim
Also das ist der 2016. Tag des ersten Monats nach dem 10. Jahr? – Strawberry
Ich würde die Daten in PHP analysieren, um die Verwendung von DATE_FORMAT im SQL-Satz zu vermeiden. Ihre Abfrage analysiert alle Daten der Tabelle. Wenn Sie stattdessen das Datum richtig formatiert übergeben, wird dies nicht gemacht und vielleicht ist der Fehler auf diese Weise. –