4 Stimmen

Wie wähle ich am besten die Zeilen der letzten 7 Tage aus?

Wie kann ich am besten nur die Zeilen aus der Tabelle auswählen, die in den letzten 7 Tagen erstellt wurden?

Es gibt Dutzende von Zeit- und Datumsfunktionen in MySQL, und ich bin etwas verwirrt, was der einfachste Weg ist, dies zu tun.

Nehmen Sie für diese Frage an, dass Sie eine Tabelle mit dem Namen "my_table" haben, die eine Zeile "created_at" enthält, die ein DATETIME ist.

SELECT * FROM my_table WHERE ...

Was würden Sie in die WHERE-Klausel eintragen?

14voto

Drew Punkte 14621
WHERE DATEDIFF(NOW(), created_at) <= 7;

Ich mag es, weil es da steht: "Wo die Datumsdifferenz zwischen dem Jetzt und dem Zeitpunkt der Erstellung höchstens 7 (Tage) beträgt." in meinem Kopf

12voto

T.J. Crowder Punkte 948310
...WHERE created_at >= Date_Add(now(), INTERVAL -7 DAY)

Das ist meine bevorzugte Methode, weil sie so... klar ist. Aber ADDDATE ist auch in Ordnung (und Sie können die INTERVAL Die Standardeinstellung ist "Tage", so dass man sieht, dass die Leute es auslassen). Sie nicht eine Berechnung anstellen wollen created_at und vergleichen Sie es mit now() denn das erfordert die Berechnung auf created_at für jede Zeile (vorausgesetzt, MySQL optimiert sie nicht), während das Ändern von now() und den Vergleich mit einer unveränderten created_at bedeutet, dass MySQL diesen Teil einmal durchführt und das Ergebnis beim Vergleich mit Zeilen verwendet, ganz zu schweigen von Indizes.

4voto

Sabeen Malik Punkte 10766

...... WHERE created_at >= DATE_SUB(CURRENT_DATE, INTERVAL 7 DAY)

das wird hoffentlich helfen

2voto

Byron Whitlock Punkte 51063
 WHERE  ADDDATE(datefield, 7) > NOW();

2voto

Anthony Punkte 35161
SELECT * FROM my_table
WHERE DATE(created_at) >= SUBDATE(DATE(NOW()), 7)

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X