Frage MySQL Query zur Auswahl von Daten aus der letzten Woche?


Hallo Ich habe eine Tabelle mit einem Datumsfeld und einigen anderen Informationen. Ich möchte alle Einträge der letzten Woche auswählen (Wochenbeginn ab Sonntag).

Tabellenwerte:

id  date
2   2011-05-14 09:17:25
5   2011-05-16 09:17:25
6   2011-05-17 09:17:25
8   2011-05-20 09:17:25
15  2011-05-22 09:17:25

Ich möchte alle IDs der letzten Woche auswählen, die erwartete Ausgabe ist 5, 6, 8. (ID 2 nicht in der letzten Woche und ID 15 ist in der aktuellen Woche.)

Wie schreibe ich und SQL Query für die gleichen.


75
2018-05-22 18:42


Ursprung


Antworten:


SELECT id FROM tbl
WHERE date >= curdate() - INTERVAL DAYOFWEEK(curdate())+6 DAY
AND date < curdate() - INTERVAL DAYOFWEEK(curdate())-1 DAY

101
2018-05-22 19:01



select id from tbname
where date between date_sub(now(),INTERVAL 1 WEEK) and now();

112
2017-08-22 18:46



Vereinfachte form:

Letzte Woche Daten: 

SELECT id FROM tbl


WHERE 
WEEK (date) = WEEK( current_date ) - 1 AND YEAR( date) = YEAR( current_date );

Vor 2 Wochen Daten: 

SELECT id FROM tbl


WHERE 
WEEK (date) = WEEK( current_date ) - 2 AND YEAR( date) = YEAR( current_date );

SQL-Geige

http://sqlfiddle.com/#!8/6fa6e/2


12
2017-10-25 06:54



Sie können Ihre Berechnung in PHP vornehmen und sie dann zu Ihrer Abfrage hinzufügen:

$date = date('Y-m-d H:i:s',time()-(7*86400)); // 7 days ago

$sql = "SELECT * FROM table WHERE date <='$date' ";

Jetzt wird dies das Datum für eine Woche geben


8
2018-05-22 18:52



SELECT id FROM table1
WHERE YEARWEEK(date) = YEARWEEK(NOW() - INTERVAL 1 WEEK)

Ich verwende die YEARWEEK-Funktion speziell, um zur vorherigen ganzen Kalenderwoche zurückzukehren (im Gegensatz zu 7 Tagen vor heute). YEARWEEK lässt auch ein zweites Argument zu, das den Beginn der Woche festlegt oder festlegt, wie die erste / letzte Woche des Jahres behandelt wird. Mit YEARWEEK können Sie die Anzahl der Wochen, die in einer einzelnen Variable vor- und zurückgehen, beibehalten und nicht die gleiche Wochennummer aus früheren / zukünftigen Jahren verwenden, und sie ist weit kürzer als die meisten anderen Antworten hier.


8
2017-08-26 08:06



Sie müssen berechnen, welcher Tag im Vergleich zu heute Sonntag ist in Ihrer Middleware (PHP, Python, etc.) *

Dann,

select id
from table
where date >= "$sunday-date" + interval 7 DAY
  • ist vielleicht auch eine Möglichkeit, das Datum von Sonntag in MySQL zu beziehen; das wäre wohl die sauberere Lösung, wenn nicht zu teuer zu leisten

3
2018-05-22 18:49



Der wahrscheinlich einfachste Weg wäre:

SELECT id
FROM table
WHERE date >= current_date - 7

Für 8 Tage (d. H. Montag - Montag)


3
2017-07-27 20:58



Es kann in einer einzigen Zeile sein:

SELECT * FROM table WHERE Date BETWEEN (NOW() - INTERVAL 7 DAY) AND NOW()

2
2017-09-08 07:23



Die obige Abfrage funktioniert nicht. Nach dem where Klausel, wenn wir nicht können CAST der Spaltenwert, dann wird es nicht funktionieren. Du solltest cast der Spaltenwert

z.B.:

SELECT.....
WHERE CAST( yourDateColumn AS DATE ) > DATEADD( DAY, -7, CAST( GETDATE() AS DATE )

1
2018-04-05 14:35