• 那是从何处传来的钟声呢?偶尔听到那钟声,平添一份喜悦与向往之情。

MySql 计算连续签到天数

后端 Nanait 4个月前 (07-12) 405次浏览 已收录 0个评论 扫描二维码
今天写了一个签到计算天数的 sql, 记录下来. 
思路如下:

获取当前签到的最后时间(今天或昨天), 定义一个变量@i 对签到时间进行天数自减, 然后查询出当前记录签到时间是否与自减后的时间匹配.   如果匹配表示天数是连续时间. 


SELECT
    count( 1 ) 
FROM
    (
    SELECT
        date_sub( a.ct, INTERVAL 1 DAY ) signDate,
        ( @i := DATE_ADD( @i, INTERVAL - 1 DAY ) ) today 
    FROM
        ( SELECT ct FROM user_reach WHERE user_id = 14864795 ORDER BY ct DESC ) a
        INNER JOIN (
        SELECT
            @i := max( ct ) AS signMax 
        FROM
            user_reach 
        WHERE
            user_id = 14864795 
            AND ( TO_DAYS( ct ) = TO_DAYS( curdate()) OR TO_DAYS( ct ) = TO_DAYS( DATE_ADD( curdate(), INTERVAL - 1 DAY ) ) ) 
        ) b 
    WHERE
        b.signMax IS NOT NULL 
        AND TO_DAYS(
        DATE_ADD( @i, INTERVAL - 1 DAY )) = TO_DAYS( date_sub( a.ct, INTERVAL 1 DAY ) ) 
    ) c

何处钟 , 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:MySql 计算连续签到天数
喜欢 (0)
[15211539367@163.com]
分享 (0)

您必须 登录 才能发表评论!