Ich habe Daten in einer Tabelle, wo ich die Datensätze für jeden Tag haben kann oder nicht. Ich muss die letzten 6 Wochen Daten bekommen, wo ich nur letzte Aufzeichnung in jeder Woche benötige.Wie bekomme ich den letzten Datensatz in jeder Woche in Mysql
Angenommen, heute ist 24., ich muss die letzte Aufzeichnung vom 18. bis 24. und 11. bis 17. usw. bis 6 Wochen bekommen.
Diese Abfrage gibt alle 6 Wochen Datensätze, aber ich brauche letzte Aufnahme in jeder Woche.
SELECT snap.created_at
FROM snapshots snap
WHERE snap.created_at > DATE_SUB(NOW(), INTERVAL 6 WEEK)
ORDER BY created_at DESC;
Beispiel:
CREATED_AT
2017-03-23 11:20:30
2017-03-23 10:40:21
2017-03- 21 09:58:42
2017-03-03 15:02:20
2017-03-02 14:41:49
2017-02-23 10:59:26
2017-02-22 15:59:53
2017-02-21 11 : 08: 57
2017-02-21 10:43:24
2017-02-18 01:37:33
2017-02-11 01:38:29
Ausgang:
(1. Woche) 2017.02.11 - 2017-02-17 = 2017-02-11 01:38:29
(2. Woche) 2017.02.18 - 2017-02-24 = 2017-02-23 10:59:26
(3. Woche) 2017.02.25 - 2017-03-03 = 2017-03-03 15:02:20
(4. Woche) 2017.03.04 - 2017-03-10 = 2017-03-03 15:02:20 (wie es keine Datensätze in dieser Woche gibt, müssen Sie den neuesten Datensatz aus der letzten Woche anzeigen)
(5. Woche) 2017-03-11 - 2017-03-17 = 2017-03-03 15: 02.20 (da es keine Aufzeichnungen in dieser Woche sind, benötigen Sie die aktuelle Datensatz aus der letzten Woche zeigen)
(6. Woche) 2017.03.18 - 2017.03.24 = 2017-03- 23 11:20:30
Sie meinen subtrac t Datum von jetzt bis 6, das wäre der Anfang der ersten Woche, die sich rückwärts bewegt? Geben Sie hier nur ein Beispiel und das erwartete Ergebnis ein –
Arbeiten Sie MySQL oder SQL? –
schreibe eine Select-Abfrage mit zwischen Bedingung wie Select * aus Tabelle wo Col_Date zwischen DATEDIFF (GETDATE() -6, 'DAYS') UND GETDATE() –