2016-07-14 15 views
1

Ich muss Daten aus Mysql für die letzten 7 Tage auswählen. Ich habe das Feld "Datum" und die Werte haben das Format mm.dd.yy. So habe ich versucht, spezielle mysql Anfrage zu tun, aber es funktioniert nicht mit meinem Feld, ich glaube, dass Datum in falschem Format. Wie kann ich das von PHP (verwenden Sie eine Variable, um mysql-Einträge zu erhalten), oder mit benutzerdefinierten Select-Abfrage?Wie die letzten 7 Tage Ergebnisse von mysql (mit benutzerdefinierten Datenfeld) auswählen?

+0

Verwenden Sie explode, um es richtiges Format zu machen und dann versuchen Sie es erneut, was Sie zuvor versucht haben. – C2486

+0

es ist eine sehr schlechte Praxis, Ihr Datum als Varchar und in mm.dd.yy Format zu speichern. Bleiben Sie bei der Konvention und machen Sie es DATE oder DATETIME Format und speichern Sie es im JJJJ-MM-TT-Format. –

+0

@ObjectManipulator Wie kann ich ein Datumsfeld im Format erstellen, das ich brauche? Und wird es mit Datenmanipulationen in SQL arbeiten? – DanialartBiz

Antwort

3

machen Sie STR_TO_DATE() verwenden können Ihr idiosyncratic Datumsformat zu einem Standard DATE Wert zu konvertieren. Ein Ausdruck wie dies

STR_TO_DATE('07.17.97', '%m.%d.%y') 

den Trick Dann können Sie

WHERE STR_TO_DATE(`date`, '%m.%d.%y') >= CURDATE() - INTERVAL 7 DAY 

in Ihrer Abfrage sagen Elemente filtern mit date Werte vor einer Woche beginnen.

Wenn Sie jedoch viele zu filternde Zeilen haben, haben Sie eine schlechte Leistung: Diese Art der WHERE-Klausel ist nicht sargable.

+0

Ich ändere meinen Datumsfeldtyp in DATE und formatiere ihn auf der Vorderseite neu, um die Ansicht zu erleichtern. Und seine Lösung für mich. – DanialartBiz

0

zuerst Ihre Tabelle lesen und das Datumsformat

$new_date_format = date('Ymd',mktime(0,0,0,substr($date,0,2),substr($date,3,2),substr($date,6,2))); 

Danach wechseln Sie comparisions

+0

Dies würde dem ganzen Zweck der Verwendung von SQL widersprechen - Sie müssten die gesamte Tabelle abrufen und dann mit PHP-Code suchen. Was meinst du, ineffizient? –

+0

Hängt davon ab, wie groß der Tisch ist! –

+0

Hmm, nein ... ich stimme nicht zu. –

Verwandte Themen