MYSQL实现连续签到功能断签一天从头开始(sql语句)

发布时间 - 2026-01-11 01:16:31    点击率:

1,创建测试表

CREATE TABLE `testsign` ( 
 `userid` int(5) DEFAULT NULL, 
 `username` varchar(20) DEFAULT NULL, 
 `signtime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, 
 `type` int(1) DEFAULT '0' COMMENT '为0表示签到数据,1表示签到日期字典数据' 
) ENGINE=InnoDB DEFAULT CHARSET=utf8 

2,插入测试数据,签到时间为5.21号到6.5号,可以写活,但是要写存储过程,我比较懒,重点应该是取签到数据的代码,就是第三点,呵呵

insert into `testsign` (`userid`, `username`, `signtime`, `type`) values('72164','字典','2017-05-21 00:00:00','1'); 
insert into `testsign` (`userid`, `username`, `signtime`, `type`) values('72164','字典','2017-05-22 00:00:00','1'); 
insert into `testsign` (`userid`, `username`, `signtime`, `type`) values('72164','字典','2017-05-23 00:00:00','1'); 
insert into `testsign` (`userid`, `username`, `signtime`, `type`) values('72164','字典','2017-05-24 00:00:00','1'); 
insert into `testsign` (`userid`, `username`, `signtime`, `type`) values('72164','字典','2017-05-25 00:00:00','1'); 
insert into `testsign` (`userid`, `username`, `signtime`, `type`) values('72164','字典','2017-05-26 00:00:00','1'); 
insert into `testsign` (`userid`, `username`, `signtime`, `type`) values('72164','字典','2017-05-27 00:00:00','1'); 
insert into `testsign` (`userid`, `username`, `signtime`, `type`) values('72164','字典','2017-05-28 00:00:00','1'); 
insert into `testsign` (`userid`, `username`, `signtime`, `type`) values('72164','字典','2017-05-29 00:00:00','1'); 
insert into `testsign` (`userid`, `username`, `signtime`, `type`) values('72164','字典','2017-05-30 00:00:00','1'); 
insert into `testsign` (`userid`, `username`, `signtime`, `type`) values('72164','字典','2017-05-31 00:00:00','1'); 
insert into `testsign` (`userid`, `username`, `signtime`, `type`) values('72164','字典','2017-06-01 00:00:00','1'); 
insert into `testsign` (`userid`, `username`, `signtime`, `type`) values('72164','字典','2017-06-02 00:00:00','1'); 
insert into `testsign` (`userid`, `username`, `signtime`, `type`) values('72164','字典','2017-06-03 00:00:00','1'); 
insert into `testsign` (`userid`, `username`, `signtime`, `type`) values('72164','字典','2017-06-04 00:00:00','1'); 
insert into `testsign` (`userid`, `username`, `signtime`, `type`) values('72164','字典','2017-06-05 00:00:00','1'); 
insert into `testsign` (`userid`, `username`, `signtime`, `type`) values('800675','吴小双签到数据','2017-05-21 00:00:00','0'); 
insert into `testsign` (`userid`, `username`, `signtime`, `type`) values('800675','吴小双签到数据','2017-05-22 00:00:00','0'); 
insert into `testsign` (`userid`, `username`, `signtime`, `type`) values('800675','吴小双签到数据','2017-05-23 00:00:00','0'); 
insert into `testsign` (`userid`, `username`, `signtime`, `type`) values('800675','吴小双签到数据','2017-05-24 00:00:00','0'); 
insert into `testsign` (`userid`, `username`, `signtime`, `type`) values('800675','吴小双签到数据','2017-05-25 00:00:00','0'); 
insert into `testsign` (`userid`, `username`, `signtime`, `type`) values('800675','吴小双签到数据','2017-05-26 00:00:00','0'); 

3,查询连续签到数据

SELECT * FROM testsign WHERE TYPE=0 AND 
 DATE_FORMAT(signtime,'%Y%m%d')>( 
 SELECT IFNULL(MAX(DATE_FORMAT(signtime,'%Y%m%d')),"20170520") FROM testsign WHERE TYPE=1 
 AND DATE_FORMAT(signtime,'%Y%m%d')<=DATE_ADD(NOW(), INTERVAL -1 DAY) 
 AND DATE_FORMAT(signtime,'%Y%m%d') NOT IN ( 
    SELECT DATE_FORMAT(signtime,'%Y%m%d') FROM testsign WHERE TYPE=0 AND userid=800675 
    ) 
 ) 
 AND DATE_FORMAT(signtime,'%Y%m%d')<='20170605' 
 AND userid=800675 

未断数据

删掉23号数据,从24号开始算,连续签三天

以上所述是小编给大家介绍的MYSQL实现连续签到功能断签一天从头开始,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对网站的支持!


# mysql  # 连续签到  # 签到  # SQLSERVER记录登录用户的登录时间(自写脚本)  # mysql如何查询两个日期之间最大的连续登录天数  # 使用github部署前端vue项目  # SQL查询语句求出用户的连续登陆天数  # 小双  # 小编  # 在此  # 给大家  # 时间为  # 三点  # 所述  # 给我留言  # 感谢大家  # 要写  # 存储过程  # 应该是  # 疑问请  # 有任何  # 测试数据  # InnoDB  # CHARSET  # ENGINE  # values  # type 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: Linux安全能力提升路径_长期防护思维说明【指导】  javascript读取文本节点方法小结  网站广告牌制作方法,街上的广告牌,横幅,用PS还是其他软件做的?  常州企业网站制作公司,全国继续教育网怎么登录?  网站制作公司哪里好做,成都网站制作公司哪家做得比较好,更正规?  Android中Textview和图片同行显示(文字超出用省略号,图片自动靠右边)  夸克浏览器网页跳转延迟怎么办 夸克浏览器跳转优化  中国移动官方网站首页入口 中国移动官网网页登录  如何构建满足综合性能需求的优质建站方案?  Laravel如何使用withoutEvents方法临时禁用模型事件  nginx修改上传文件大小限制的方法  Laravel如何实现RSS订阅源功能_Laravel动态生成网站XML格式订阅内容【教程】  Laravel怎么实现微信登录_Laravel Socialite第三方登录集成  网页制作模板网站推荐,网页设计海报之类的素材哪里好?  深圳网站制作公司好吗,在深圳找工作哪个网站最好啊?  Laravel如何与Inertia.js和Vue/React构建现代单页应用  JavaScript Ajax实现异步通信  Laravel中DTO是什么概念_在Laravel项目中使用数据传输对象(DTO)  如何在建站宝盒中设置产品搜索功能?  百度浏览器网页无法复制文字怎么办 百度浏览器复制修复  如何生成腾讯云建站专用兑换码?  Laravel怎么配置.env环境变量_Laravel生产环境敏感数据保护与读取【方法】  中山网站制作网页,中山新生登记系统登记流程?  Laravel如何使用Socialite实现第三方登录?(微信/GitHub示例)  如何在万网自助建站中设置域名及备案?  如何快速生成橙子建站落地页链接?  DeepSeek是免费使用的吗 DeepSeek收费模式与Pro版本功能详解  微信小程序 HTTPS报错整理常见问题及解决方案  为什么php本地部署后css不生效_静态资源加载失败修复技巧【技巧】  JS中使用new Date(str)创建时间对象不兼容firefox和ie的解决方法(两种)  js实现获取鼠标当前的位置  Win11任务栏卡死怎么办 Windows11任务栏无反应解决方法【教程】  在线制作视频网站免费,都有哪些好的动漫网站?  如何在 Pandas 中基于一列条件计算另一列的分组均值  ai格式如何转html_将AI设计稿转换为HTML页面流程【页面】  详解Android中Activity的四大启动模式实验简述  Win11怎么关闭透明效果_Windows11辅助功能视觉效果设置  如何做网站制作流程,*游戏网站怎么搭建?  uc浏览器二维码扫描入口_uc浏览器扫码功能使用地址  C#如何调用原生C++ COM对象详解  如何在宝塔面板中创建新站点?  如何快速打造个性化非模板自助建站?  html5的keygen标签为什么废弃_替代方案说明【解答】  香港服务器部署网站为何提示未备案?  如何在 Telegram Web View(iOS)中防止键盘遮挡底部输入框  1688铺货到淘宝怎么操作 1688一键铺货到自己店铺详细步骤  打造顶配客厅影院,这份100寸电视推荐名单请查收  Android仿QQ列表左滑删除操作  如何在Windows虚拟主机上快速搭建网站?  Linux系统命令中screen命令详解