因为业务须要统计一批数据。用到关于mysql的时间操作函数和存储过程,问题已经基本解决。把过程记录下:

1. mysql的语句中不支持直接用循环。循环仅仅能在存储过程中使用。

2. 写为文件时,注意一些隐藏的字符,造成语法错误。本例中凝视中包括一些不可见字符。没有找到。

3. 存储过程中尽量多使用分好,切割开语句。

本例中 drop一句最初没有写。导致一直有错。

4. 时间函数非常强大,能够避免一些工作。http://www.cnblogs.com/ggjucheng/p/3352280.html

5. sql语句的优化非常重要。本例中仅攻克了问题,但数据量太大。存储过程执行了非常久。期待有人能帮忙优化while语句中的优化。

以下贴代码了:

--*将表test.transport20140901表中的数据依照每五分钟一个间隔,统计各个路口的车流数量r
--*@start_time 起始时间 是整点时间的五分钟间隔 如 2014-09-01 00:20:00
--*@end_time 终止时间 是整点的五分钟间隔且大于start_time 如 2014-09-01 01:00:00
--*统计范围包括起始时间,但不包括终止时间 delimiter $
drop procedure transport_status;
create procedure transport_status(start_time datetime,end_time datetime)
begin
declare mid_start_time datetime;
declare mid_end_time datetime;
set mid_start_time=start_time;
set mid_end_time=date_add(start_time, interval 5 minute);
lab: while mid_start_time < end_time do
insert into
test.transport_status(stamp,stamp_time,address,car_count)
(select
FLOOR(UNIX_TIMESTAMP(time)/300) as stmp,
date_format(mid_end_time,'%Y-%m-%d %H:%i:%s') as tm,
address,
count(address) as cnt
from
test.transport20140901
where
time > date_add(mid_start_time, interval -1 second)
and time < mid_end_time
group by address);
set mid_start_time=date_add(mid_start_time, interval 5 minute);
set mid_end_time=date_add(mid_end_time, interval 5 minute);
end while lab;
end $
delimiter ; call transport_status("2014-09-01 00:00:00","2014-09-2 00:00:00");

mysql时间操作函数和存储过程的更多相关文章

  1. mysql时间格式化函数日期格式h和H区别

    本文为博主原创,未经允许不得转载: 今天碰到一个问题,发现项目中有一个统计图的数据和时间格式没有对应准确,统计图要描述的是操作次数和操作时间的关系, 但很奇怪的是操作次数对应的时间却是凌晨,实际应用中 ...

  2. mysql时间操作(时间差和时间戳和时间字符串的互转)

    mysql时间操作(时间差和时间戳和时间字符串的互转) 两个时间差: MySQL datediff(date1,date2):两个日期相减 date1 - date2,返回天数. select dat ...

  3. mysql创建自定义函数与存储过程

    mysql创建自定义函数与存储过程 一 创建自定义函数 在使用mysql的过程中,mysql自带的函数可能不能完成我们的业务需求,这时就需要自定义函数,例如笔者在开发过程中遇到下面这个问题 mysql ...

  4. Mysql 时间操作

    Mysql 时间操作(当天,昨天,7天,30天,半年,全年,季度) 1 . 查看当天日期 select current_date(); 2. 查看当天时间 select current_time(); ...

  5. mysql中的函数与存储过程

    mysql中的函数:1 mysql下创建函数: 1.1 语法: delimiter $$ -- 设置分隔符,默认是; 设置成其他符号,让编译器知道我们函数编写的结束,此处设置成$$ create fu ...

  6. MYSQL常用操作函数的封装

    1.mysql常用函数封装文件:mysql.func.php <?php /** * 连接MYSQL函数 * @param string $host * @param string $usern ...

  7. T-SQL——函数——时间操作函数

    目录 0. 日期和时间类型 0.0 时间类型 1. 转换函数 1.1 CAST 1.2 CONVERT 2. 日期操作函数 2.0 GETDATE和GETUTCDATE 2.1 SYSDATETIME ...

  8. MySQL字符串操作函数

    使用方法:concat(str1,str2,-)   返回结果为连接参数产生的字符串.如有任何一个参数为NULL ,则返回值为 NULL. mysql> select concat('11',' ...

  9. MySQL时间操作的系统函数用法

    我要查询获得当天凌晨30分的datetime值的方式:select ADDDATE(CURDATE(), INTERVAL TIME_TO_SEC(TIMEDIFF("00:30:00&qu ...

随机推荐

  1. rest framework 类 继承图

  2. Codeforces Round #448 C. Square Subsets

    题目链接 Codeforces Round #448 C. Square Subsets 题解 质因数 *质因数 = 平方数,问题转化成求异或方程组解的个数 求出答案就是\(2^{自由元-1}\) , ...

  3. bzoj 2244

    没有正确分析路径可能的条数,它是指数增长的,会爆long long. 然后就是正反两次时间分治. 另一个就是max with count,即带计数的最值,即除了记录最值,还要记录最值取得的次数. /* ...

  4. 安装gitlab管理自己的代码

    安装gitlab的资料网上搜索很多,但发现很多都是比较老的资料了.我把我安装的过程记录一下,应该是最简单的过程了 1. 到 https://about.gitlab.com/downloads/ 下载 ...

  5. LAMP架构之NFS

    需求分析: 前端需支持更大的访问量,单台Web服务器已无法满足需求了,则需扩容Web服务器: 虽然动态内容可交由后端的PHP服务器执行,但静态页面还需要Web服务器自己解析,那是否意味着多台Web服务 ...

  6. PowerDesigner关系线显示名称

    选中关联关系线,右击选择“格式”,打开如下窗口,将“Name” 选项进行勾选上即可. 参考: http://loginleft.iteye.com/blog/2400980

  7. 从零开始搭建linux下laravel 5.5所需环境(二)

    我们已经装好了nginx,现在我们开始装mysql和php 我们同样使用yum来安装. 先安装MySQL软件(客户端.服务器端.依赖库) yum install -y mysql mysql-serv ...

  8. if....else的基本用法

    if....else...是基本流程控制语句 1.基本格式: if(条件){ }else if(条件){ }else if(条件){ } ........ else{ } 解释:其中else if.e ...

  9. jquery googleapis

    <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js" type=&quo ...

  10. [Node.js]Express web框架

    摘要 Express是一个简洁灵活的node.js web应用框架,提供了一系列强大特性帮助你创建各种web应用和丰富的http工具.使用express可以快速创建一个完整功能的网站. Express ...