[PHP] - current streak by date
Tue May 31 2022 12:14:44 GMT+0000 (Coordinated Universal Time)
Saved by
@robert_code
SELECT MAX(streak) AS streak
FROM (
SELECT `datetime`,
DATEDIFF(NOW(), `datetime`),
@streak := IF( DATEDIFF(NOW(), `datetime`) - @days_diff > 1, @streak,
IF(@days_diff := DATEDIFF(NOW(), `datetime`), @streak+1, @streak+1)) AS streak
FROM user_session
CROSS JOIN (SELECT @streak := 0, @days_diff := -1) AS vars
WHERE user_id = 1 AND `datetime` <= NOW()
ORDER BY `datetime` DESC) AS t
OR
SELECT MAX(streak) AS streak
FROM (
SELECT `datetime`,
DATEDIFF(NOW(), `datetime`),
@streak := IF( DATEDIFF(NOW(), `datetime`) - @days_diff > 1, @streak,
IF(@days_diff := DATEDIFF(NOW(), `datetime`), @streak+1, @streak+1)) AS streak
FROM user_session
CROSS JOIN (SELECT @streak := 0, @days_diff := 1) AS vars
WHERE user_id = 1 AND `datetime` <= NOW()
ORDER BY `datetime` DESC) AS t
content_copyCOPY
Comments