MYSQL實(shí)現(xiàn)連續(xù)簽到功能斷簽一天從頭開始(sql語句)
1,創(chuàng)建測試表
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表示簽到數(shù)據(jù),1表示簽到日期字典數(shù)據(jù)' ) ENGINE=InnoDB DEFAULT CHARSET=utf8
2,插入測試數(shù)據(jù),簽到時(shí)間為5.21號(hào)到6.5號(hào),可以寫活,但是要寫存儲(chǔ)過程,我比較懶,重點(diǎn)應(yīng)該是取簽到數(shù)據(jù)的代碼,就是第三點(diǎn),呵呵
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','吳小雙簽到數(shù)據(jù)','2017-05-21 00:00:00','0'); insert into `testsign` (`userid`, `username`, `signtime`, `type`) values('800675','吳小雙簽到數(shù)據(jù)','2017-05-22 00:00:00','0'); insert into `testsign` (`userid`, `username`, `signtime`, `type`) values('800675','吳小雙簽到數(shù)據(jù)','2017-05-23 00:00:00','0'); insert into `testsign` (`userid`, `username`, `signtime`, `type`) values('800675','吳小雙簽到數(shù)據(jù)','2017-05-24 00:00:00','0'); insert into `testsign` (`userid`, `username`, `signtime`, `type`) values('800675','吳小雙簽到數(shù)據(jù)','2017-05-25 00:00:00','0'); insert into `testsign` (`userid`, `username`, `signtime`, `type`) values('800675','吳小雙簽到數(shù)據(jù)','2017-05-26 00:00:00','0');
3,查詢連續(xù)簽到數(shù)據(jù)
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
未斷數(shù)據(jù)
刪掉23號(hào)數(shù)據(jù),從24號(hào)開始算,連續(xù)簽三天
以上所述是小編給大家介紹的MYSQL實(shí)現(xiàn)連續(xù)簽到功能斷簽一天從頭開始,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對腳本之家網(wǎng)站的支持!
相關(guān)文章
MySQL借助DB實(shí)現(xiàn)分布式鎖思路詳解
這篇文章主要給大家介紹了關(guān)于MySQL借助DB實(shí)現(xiàn)分布式鎖思路的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家學(xué)習(xí)或者使用MySQL具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧2019-10-10MySql采用GROUP_CONCAT合并多條數(shù)據(jù)顯示的方法
這篇文章主要介紹了MySql采用GROUP_CONCAT合并多條數(shù)據(jù)顯示的方法,是MySQL數(shù)據(jù)庫程序設(shè)計(jì)中常見的實(shí)用技巧,需要的朋友可以參考下2014-10-10PhpMyAdmin 配置文件現(xiàn)在需要一個(gè)短語密碼的解決方法
本文主要介紹PhpMyAdmin 配置文件現(xiàn)在需要一個(gè)短語密碼的解決方法,比較實(shí)用,希望能給大家做一個(gè)參考。2016-06-06CentOS 7中MySQL連接數(shù)被限制為214個(gè)的解決方法
這篇文章主要給大家介紹了關(guān)于CentOS 7中MySQL連接數(shù)被限制為214個(gè)的解決方法,文中通過示例代碼介紹的非常詳細(xì),對大家具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面跟著小編來一起看看吧。2017-06-06MySQL刪除表數(shù)據(jù)、清空表命令詳解(truncate、drop、delete區(qū)別)
介紹了MySQL中清空或刪除表數(shù)據(jù)的三種方法:truncate、delete和drop,以及它們的特點(diǎn)、使用場景和注意事項(xiàng),Truncate用于快速刪除表中所有數(shù)據(jù)并釋放空間,但不保留表結(jié)構(gòu);delete用于刪除表中特定行或所有數(shù)據(jù),保留表結(jié)構(gòu)且操作可回滾2024-10-10