Ich versuche, eine Abfrage aus, diese zu verwenden SO Check for x consecutive days - given timestamps in database Frage ein Benutzer eine Anzahl von aufeinander folgenden Tagen zu rechnen hat eine Aktivität, dh 3 Tage vorgelegt, 5 Tage, 7 Tage usw.Erhalten Sie 3 aufeinanderfolgende Tage von MySQL-Daten
die Abfrage ist:
SELECT IF(COUNT(1) > 0, 1, 0) AS has_consec
FROM
(
SELECT *
FROM
(
SELECT IF(b.dateAdded IS NULL, @val:[email protected]+1, @val) AS consec_set
FROM activity a
CROSS JOIN (SELECT @val:=0) var_init
LEFT JOIN activity b ON
a.userID = b.userID AND
a.dateAdded = b.dateAdded + INTERVAL 1 DAY
WHERE a.userID = 1
) a
GROUP BY a.consec_set
HAVING COUNT(1) >= 3
) a
der Code funktioniert gut, wenn das Datumsfeld nicht Datums- und Uhrzeit ist aber wie würde ich den Code ändern, die Zeitkomponente von Datums- und Uhrzeit zu ignorieren? Ich habe versucht, DATE (dateAdded) zu verwenden, aber das hat nicht funktioniert.
Meine Daten wie folgt aussieht:
userID dateAdded
1 2016-07-01 17:01:56
1 2016-07-02 12:45:49
1 2016-07-03 13:06:27
1 2016-07-04 12:51:10
1 2016-07-05 15:51:10
2 2016-07-06 16:51:10
2 2016-07-07 11:51:10
1 2016-07-08 11:26:38
Dank
dieses http Versuchen: //www.tutorialspoint.com/mysql/mysql-date-time-functions.htm#function_timestampadd –
Versuchen Sie, Ihre Datum Uhrzeit Feld auf dieses Datum wie folgt zu 'DATUM (a.dateAdded)' – 1000111
Versucht, dass und es hat nicht funktioniert. Wenn ich die Zeitkomponente ändere, um die gleiche zu sein, funktioniert die Abfrage, aber sogar das Gießen auf DATE lieferte nicht die korrekten Ergebnisse. – puks1978