mysql计算连续天数,mysql连续登录天数,连续天数统计

>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

蕃薯耀 2016年11月28日 09:29:10 星期一

http://fanshuyao.iteye.com/

mysql计算连续天数,mysql连续登录天数,连续天数统计:

http://fanshuyao.iteye.com/blog/2341455

Oracle计算连续天数,计算连续时间,Oracle连续天数统计

http://fanshuyao.iteye.com/blog/2341163

一、表结构及初始化数据

DROP TABLE user_login; CREATE TABLE user_login( pid INT NOT NULL, login_time DATETIME NOT NULL ); INSERT INTO user_login(pid, login_time) VALUES(1,'2016-11-25 13:30:45'); INSERT INTO user_login(pid, login_time) VALUES(1,'2016-11-24 13:30:45'); INSERT INTO user_login(pid, login_time) VALUES(1,'2016-11-24 10:30:45'); INSERT INTO user_login(pid, login_time) VALUES(1,'2016-11-24 09:30:45'); INSERT INTO user_login(pid, login_time) VALUES(1,'2016-11-23 09:30:45'); INSERT INTO user_login(pid, login_time) VALUES(1,'2016-11-10 09:30:45'); INSERT INTO user_login(pid, login_time) VALUES(1,'2016-11-09 09:30:45'); INSERT INTO user_login(pid, login_time) VALUES(1,'2016-11-01 09:30:45'); INSERT INTO user_login(pid, login_time) VALUES(1,'2016-10-31 09:30:45'); INSERT INTO user_login(pid, login_time) VALUES(2,'2016-11-25 13:30:45'); INSERT INTO user_login(pid, login_time) VALUES(2,'2016-11-24 13:30:45'); INSERT INTO user_login(pid, login_time) VALUES(2,'2016-11-23 10:30:45'); INSERT INTO user_login(pid, login_time) VALUES(2,'2016-11-22 09:30:45'); INSERT INTO user_login(pid, login_time) VALUES(2,'2016-11-21 09:30:45'); INSERT INTO user_login(pid, login_time) VALUES(2,'2016-11-20 09:30:45'); INSERT INTO user_login(pid, login_time) VALUES(2,'2016-11-19 09:30:45'); INSERT INTO user_login(pid, login_time) VALUES(2,'2016-11-02 09:30:45'); INSERT INTO user_login(pid, login_time) VALUES(2,'2016-11-01 09:30:45'); INSERT INTO user_login(pid, login_time) VALUES(2,'2016-10-31 09:30:45'); INSERT INTO user_login(pid, login_time) VALUES(2,'2016-10-30 09:30:45'); INSERT INTO user_login(pid, login_time) VALUES(2,'2016-10-29 09:30:45');

1

DROPTABLEuser_login;CREATETABLEuser_login(pidINTNOTNULL,login_timeDATETIMENOTNULL);INSERTINTOuser_login(pid,login_time)VALUES(1,'2016-11-25 13:30:45');INSERTINTOuser_login(pid,login_time)VALUES(1,'2016-11-24 13:30:45');INSERTINTOuser_login(pid,login_time)VALUES(1,'2016-11-24 10:30:45');INSERTINTOuser_login(pid,login_time)VALUES(1,'2016-11-24 09:30:45');INSERTINTOuser_login(pid,login_time)VALUES(1,'2016-11-23 09:30:45');INSERTINTOuser_login(pid,login_time)VALUES(1,'2016-11-10 09:30:45');INSERTINTOuser_login(pid,login_time)VALUES(1,'2016-11-09 09:30:45');INSERTINTOuser_login(pid,login_time)VALUES(1,'2016-11-01 09:30:45');INSERTINTOuser_login(pid,login_time)VALUES(1,'2016-10-31 09:30:45');INSERTINTOuser_login(pid,login_time)VALUES(2,'2016-11-25 13:30:45');INSERTINTOuser_login(pid,login_time)VALUES(2,'2016-11-24 13:30:45');INSERTINTOuser_login(pid,login_time)VALUES(2,'2016-11-23 10:30:45');INSERTINTOuser_login(pid,login_time)VALUES(2,'2016-11-22 09:30:45');INSERTINTOuser_login(pid,login_time)VALUES(2,'2016-11-21 09:30:45');INSERTINTOuser_login(pid,login_time)VALUES(2,'2016-11-20 09:30:45');INSERTINTOuser_login(pid,login_time)VALUES(2,'2016-11-19 09:30:45');INSERTINTOuser_login(pid,login_time)VALUES(2,'2016-11-02 09:30:45');INSERTINTOuser_login(pid,login_time)VALUES(2,'2016-11-01 09:30:45');INSERTINTOuser_login(pid,login_time)VALUES(2,'2016-10-31 09:30:45');INSERTINTOuser_login(pid,login_time)VALUES(2,'2016-10-30 09:30:45');INSERTINTOuser_login(pid,login_time)VALUES(2,'2016-10-29 09:30:45');

二、封装计算连续天数的方法

DELIMITER $$ CREATE FUNCTION f_continuty_days(id INT, start_time DATE, end_time DATE) RETURNS INT BEGIN DECLARE days INT; DECLARE flag INT; DECLARE previous_day DATE; SET days := 0; SET flag := 1; SET previous_day := DATE_SUB(end_time,INTERVAL 1 DAY); WHILE flag>0 DO SELECT COUNT(DISTINCT(DATE(login_time))) INTO flag FROM user_login WHERE pid = id AND DATE(login_time) = previous_day ; IF flag > 0 THEN SET days := days + 1; SET previous_day := DATE_SUB(previous_day,INTERVAL 1 DAY); END IF; END WHILE; RETURN days; END$$ DELIMITER ;

1

DELIMITER$$CREATEFUNCTIONf_continuty_days(idINT,start_timeDATE,end_timeDATE)RETURNSINTBEGINDECLAREdaysINT;DECLAREflagINT;DECLAREprevious_dayDATE;SETdays:=0;SETflag:=1;SETprevious_day:=DATE_SUB(end_time,INTERVAL1DAY);WHILEflag>0DOSELECTCOUNT(DISTINCT(DATE(login_time)))INTOflagFROMuser_loginWHEREpid=idANDDATE(login_time)=previous_day;IFflag>0THENSETdays:=days+1;SETprevious_day:=DATE_SUB(previous_day,INTERVAL1DAY);ENDIF;ENDWHILE;RETURNdays;END$$DELIMITER;

三、调用方法

把用户pid、开始时间、结束时间参数传进去。

SELECT f_continuty_days(1,DATE('2016-10-01'),DATE('2016-11-25'));

1

SELECTf_continuty_days(1,DATE('2016-10-01'),DATE('2016-11-25'));

>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

蕃薯耀 2016年11月28日 09:29:10 星期一

http://fanshuyao.iteye.com/

mysql 统计连续天数,mysql计算延续天数,mysql连续登录天数,连续天数统计_mysql...相关推荐

  1. 【javaScript获取时间,计算任意两个日期之间相隔的天数】计算任意两个日期之间相隔的天数

    主要算法: 利用毫秒差,由于1000毫秒等于1秒,60秒等于1分钟,60分钟一小时,一天24小时.所以可以用:毫秒差 除 以(60×60×1000×24)等于天数. 代码如下: <script ...

  2. 本地计算机上的mysql服务怎么注册,本地计算机上的mysql服务启动后中止

    解决方案mysql 1.首先,你须要把原来的服务删除,使用管理者权限启动cmd,并进入对应的mysql/bin文件夹中:sql mysqld --remove mysql 2.mysql的根目录下:  ...

  3. 【MYSQL错误解决】本地计算机上的MYSQL服务启动停止后,某些服务在未由其他服务或程序使用时将自动停止

    起因:发现mysql库里的数据乱码了,中文都显示为'?',找到的解决办法是在配置文档my.ini中加一个设置: 但是加完之后重启MySQL服务就启不起来了><,就算把my.ini中新增部分 ...

  4. localdate计算相差天数_还在苦恼MySQL如何根据日期精确计算年龄?看这一篇,就够了

    转译自 How To Calculate Age From Date Of Birth In MySQL- Querychat. 中文转载,请注明出处. 使用SQL语句计算年龄,在事务处理和日期计算中 ...

  5. MySQL 计算两个日期/时间之间相差的天数、分钟数、秒数...

    MySQL 中经常遇到计算两个日期或者时间之间相差的天数.周数.小时数.分钟.秒等等,下面分享一个MySQL内置的函数:TimeStampDiff() 这个函数是MySQL本身提供的可以计算两个时间间 ...

  6. MySql按周,按月,按日分组统计数据、日期计算。并统计环比、同比

    MySql按周,按月,按日分组统计数据 <!-- 按日查询 --> SELECT DATE_FORMAT(created_date,'%Y-%m-%d') as time,sum(mone ...

  7. 数据可视化大屏电商数据展示平台开发实录(Echarts柱图曲线图、mysql筛选统计语句、时间计算、大数据量统计)

    数据可视化大屏电商数据展示平台 一.前言 二.项目介绍 三.项目展示 四.项目经验分享 4.1 翻牌器 4.1.1 翻牌器-今日实时交易 4.1.2.翻牌器后端统计SUM函数的使用 4.2 不同时间指 ...

  8. 114.Spark大型电商项目-广告点击流量实时统计-使用高性能方式将实时计算结果写入MySQL中

    目录 误区 Spark Streaming foreachRDD的正确使用方式 对于这种实时计算程序的mysql插入,有两种pattern(模式) 代码 AdUserClickCount.java I ...

  9. Mysql 编程实战三之计算两个日期的工作日数

    Mysql 编程实战三之计算两个日期的工作日数 1.需求 求出两个日期中的工作日数. 2.实现 代码如下: delimiter // drop procedure if exists getworkd ...

  10. mysql计算年龄大于30并删除_还在苦恼MySQL如何根据日期精确计算年龄?看这一篇,就够了!...

    转译自 How To Calculate Age From Date Of Birth In MySQL- Querychat,中文转载,请注明出处. 使用SQL语句计算年龄,在事务处理和日期计算中, ...

最新文章

  1. Nagios监控Dell服务器硬件状态
  2. html5手机电商网页设计代码_Html5网站制作,干货!20个视觉体验和内容俱佳的优秀网页设计...
  3. 手把手教你写高质量Android技术博客,画图工具,录像工具,Markdown写法
  4. openresty + nginx-http-sysguard 调研使用
  5. JAVA互联网应用架构师、JAVA架构、JAVA中间件、集群等互联网应用
  6. linux下oracle中文乱码问题的解决
  7. centos7 二进制安装mysql,Centos7 二进制安装mysql5.7
  8. 在odoo服务器文件夹,在windows10上安装odoo12开发环境的方法
  9. python constructor_Python学习札记(2)——搭建Boa-constructor
  10. vscode 格式化某一段代码_vscode 如何自动格式化代码?
  11. C#生成Guid,SqlServer生成Guid
  12. 如何禁止文本框输入,但是要传值
  13. 接口调用一会正常,一会失败
  14. linux多拨脚本,openwrt-mwan3负载均衡,多线多拨
  15. GYM 2015 ACM Syrian Collegiate Programming Contest
  16. archlinux安装到美化
  17. window自带的常见工具
  18. CCNA思科的一些基础知识
  19. Lucene底层原理和优化经验分享(1)-Lucene简介和索引原理
  20. 西南民族大学第十届校赛(同步赛)(H题——Ricky’s RealDan’s Ricky)

热门文章

  1. layui多文件一次性上传案例
  2. VBA之FormulaR1C1属性
  3. IC卡,ID卡,M1卡等各种卡扫盲篇
  4. 数据科学家:大器晚成,是软件工程师成功的唯一捷径
  5. The server encountered an internal error () that prevented it from fulfilling this request.
  6. 1 is not JSON serializable的解决方案
  7. opencv-python实际演练(二)军棋自动裁判(5)棋子文字的自动识别
  8. iphonex蓝牙打不开转圈_iphonex蓝牙一直在转圈
  9. HyperLedger Fabric ChainCode开发——shim.ChaincodeStubInterface用法
  10. The Elder(树形dp 斜率优化)