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
Preview:
downloadDownload PNG
downloadDownload JPEG
downloadDownload SVG
Tip: You can change the style, width & colours of the snippet with the inspect tool before clicking Download!
Click to optimize width for Twitter