mysql 统计连续天数,mysql计算延续天数,mysql连续登录天数,连续天数统计_mysql...
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...相关推荐
- 【javaScript获取时间,计算任意两个日期之间相隔的天数】计算任意两个日期之间相隔的天数
主要算法: 利用毫秒差,由于1000毫秒等于1秒,60秒等于1分钟,60分钟一小时,一天24小时.所以可以用:毫秒差 除 以(60×60×1000×24)等于天数. 代码如下: <script ...
- 本地计算机上的mysql服务怎么注册,本地计算机上的mysql服务启动后中止
解决方案mysql 1.首先,你须要把原来的服务删除,使用管理者权限启动cmd,并进入对应的mysql/bin文件夹中:sql mysqld --remove mysql 2.mysql的根目录下: ...
- 【MYSQL错误解决】本地计算机上的MYSQL服务启动停止后,某些服务在未由其他服务或程序使用时将自动停止
起因:发现mysql库里的数据乱码了,中文都显示为'?',找到的解决办法是在配置文档my.ini中加一个设置: 但是加完之后重启MySQL服务就启不起来了><,就算把my.ini中新增部分 ...
- localdate计算相差天数_还在苦恼MySQL如何根据日期精确计算年龄?看这一篇,就够了
转译自 How To Calculate Age From Date Of Birth In MySQL- Querychat. 中文转载,请注明出处. 使用SQL语句计算年龄,在事务处理和日期计算中 ...
- MySQL 计算两个日期/时间之间相差的天数、分钟数、秒数...
MySQL 中经常遇到计算两个日期或者时间之间相差的天数.周数.小时数.分钟.秒等等,下面分享一个MySQL内置的函数:TimeStampDiff() 这个函数是MySQL本身提供的可以计算两个时间间 ...
- MySql按周,按月,按日分组统计数据、日期计算。并统计环比、同比
MySql按周,按月,按日分组统计数据 <!-- 按日查询 --> SELECT DATE_FORMAT(created_date,'%Y-%m-%d') as time,sum(mone ...
- 数据可视化大屏电商数据展示平台开发实录(Echarts柱图曲线图、mysql筛选统计语句、时间计算、大数据量统计)
数据可视化大屏电商数据展示平台 一.前言 二.项目介绍 三.项目展示 四.项目经验分享 4.1 翻牌器 4.1.1 翻牌器-今日实时交易 4.1.2.翻牌器后端统计SUM函数的使用 4.2 不同时间指 ...
- 114.Spark大型电商项目-广告点击流量实时统计-使用高性能方式将实时计算结果写入MySQL中
目录 误区 Spark Streaming foreachRDD的正确使用方式 对于这种实时计算程序的mysql插入,有两种pattern(模式) 代码 AdUserClickCount.java I ...
- Mysql 编程实战三之计算两个日期的工作日数
Mysql 编程实战三之计算两个日期的工作日数 1.需求 求出两个日期中的工作日数. 2.实现 代码如下: delimiter // drop procedure if exists getworkd ...
- mysql计算年龄大于30并删除_还在苦恼MySQL如何根据日期精确计算年龄?看这一篇,就够了!...
转译自 How To Calculate Age From Date Of Birth In MySQL- Querychat,中文转载,请注明出处. 使用SQL语句计算年龄,在事务处理和日期计算中, ...
最新文章
- Nagios监控Dell服务器硬件状态
- html5手机电商网页设计代码_Html5网站制作,干货!20个视觉体验和内容俱佳的优秀网页设计...
- 手把手教你写高质量Android技术博客,画图工具,录像工具,Markdown写法
- openresty + nginx-http-sysguard 调研使用
- JAVA互联网应用架构师、JAVA架构、JAVA中间件、集群等互联网应用
- linux下oracle中文乱码问题的解决
- centos7 二进制安装mysql,Centos7 二进制安装mysql5.7
- 在odoo服务器文件夹,在windows10上安装odoo12开发环境的方法
- python constructor_Python学习札记(2)——搭建Boa-constructor
- vscode 格式化某一段代码_vscode 如何自动格式化代码?
- C#生成Guid,SqlServer生成Guid
- 如何禁止文本框输入,但是要传值
- 接口调用一会正常,一会失败
- linux多拨脚本,openwrt-mwan3负载均衡,多线多拨
- GYM 2015 ACM Syrian Collegiate Programming Contest
- archlinux安装到美化
- window自带的常见工具
- CCNA思科的一些基础知识
- Lucene底层原理和优化经验分享(1)-Lucene简介和索引原理
- 西南民族大学第十届校赛(同步赛)(H题——Ricky’s RealDan’s Ricky)
热门文章
- layui多文件一次性上传案例
- VBA之FormulaR1C1属性
- IC卡,ID卡,M1卡等各种卡扫盲篇
- 数据科学家:大器晚成,是软件工程师成功的唯一捷径
- The server encountered an internal error () that prevented it from fulfilling this request.
- 1 is not JSON serializable的解决方案
- opencv-python实际演练(二)军棋自动裁判(5)棋子文字的自动识别
- iphonex蓝牙打不开转圈_iphonex蓝牙一直在转圈
- HyperLedger Fabric ChainCode开发——shim.ChaincodeStubInterface用法
- The Elder(树形dp 斜率优化)