mysql写存储过程的一些注意事项以及mysql的一些函数
来源:互联网 发布:ntfs for mac 知乎 编辑:程序博客网 时间:2024/06/06 17:59
存储过程
drop procedure if exists proll;DELIMITER ;;create procedure proll(curDate varchar(20))begindeclare startTime varchar(20);declare endTime varchar(20);declare nextDate varchar(20);declare num int;drop table tmpTable; -- 删除临时表create temporary table if not exists tmpTable -- 不存在则创建临时表 ( time varchar(1024), num int ); truncate TABLE tmpTable; -- 使用前先清空临时表。 set startTime=str_to_date(curDate,'%Y-%m-%d %H:%i:%s');set nextDate=DATE_ADD(str_to_date(curDate,'%Y-%m-%d %H:%i:%s'),INTERVAL 1 day);-- select nextDate;while timestampdiff(hour,startTime,date_format(nextDate,'%Y-%m-%d %H:%i:%s'))>0 doset endTime=DATE_ADD(str_to_date(startTime,'%Y-%m-%d %H:%i:%s'),INTERVAL 1 hour);insert into tmpTable select concat(startTime,'-',endTime) as time,count(*) as num from logoperationentry where unix_timestamp(createTime)>=unix_timestamp(startTime) and unix_timestamp(createTime)<unix_timestamp(endTime);set startTime=endTime;end while; select * from tmpTable;end;;;DELIMITER ;call proll('2017-7-25 00:00:00');
以下是一些注意事项
1、DELIMITER是用于定义mysql的执行结束符,因为mysql默认以“;”逗号为执行结束符。如果你不希望mysql遇到逗号当作一个语句执行,则需要用到DELIMITER来定义执行结束符,让mysql一次性执行N行sql语句。2、mysql要养成良好习惯,每行sql语句都加逗号,不然也会引起语法报错
3、declare关键字只能用于存储过程中,普通sql语句需要定义变量,直接set a=1,即可。但是在存储过程中,必须用declare定义变量,这个跟微软的mssql不同。微软是所有变量定义都需要关键字declare来声明。而mysql如果非存储过程中,变量不需定义,直接set,存储过程中必须declare声明
4、日期加减函数
DATE_ADD(date,INTERVAL expr type)
DATE_SUB(date,INTERVAL expr type)
ADDDATE(date,INTERVAL expr type)
SUBDATE(date,INTERVAL expr type)
date_add与adddate是一样的,同理date_sub与subdate一样
用法:date_add(now(),interval 1 day) 增加一天
5、字符串转换成日期str_to_date(str,'%Y-%m-%d %H:%i:%s')
6、日期转换字符串date_format(date,'%Y-%m-%d %H:%i:%s')
7、日期比较最好先把日期转换成时间戳,因为时间戳是整型unix_timestamp(),参数可以是日期类型,也可以使日期格式字符串
时间戳直接可以用>、<、=操作
8、日期比较函数TIMESTAMPDIFF(interval,datetime_expr1,datetime_expr2),返回两日期之差
返回日期或日期时间表达式datetime_expr1 和datetime_expr2the 之间的整数差。其结果的单位由interval 参数给出。该参数必须是以下值的其中一个:
FRAC_SECOND。表示间隔是毫秒
SECOND。秒
MINUTE。分钟
HOUR。小时
DAY。天
WEEK。星期
MONTH。月
QUARTER。季度
YEAR。年
使用如下:
mysql> select TIMESTAMPDIFF(day,'2012-08-24','2012-08-30');+----------------------------------------------+| TIMESTAMPDIFF(day,'2012-08-24','2012-08-30') |+----------------------------------------------+| 6 | +----------------------------------------------+1 row in set (0.00 sec)
9、TIMESTAMPADD(interval,int_expr,datetime_expr)
语法:
TIMESTAMPADD(interval,int_expr,datetime_expr)
说明:
将整型表达式int_expr 添加到日期或日期时间表达式 datetime_expr中。式中的interval和上文中列举的取值是一样的。
mysql> select TIMESTAMPADD(MINUTE,8820,'2012-08-24 09:00:00'); +-------------------------------------------------+ | TIMESTAMPADD(MINUTE,8820,'2012-08-24 09:00:00') | +-------------------------------------------------+ | 2012-08-30 12:00:00 | +-------------------------------------------------+ 1 row in set (0.00 sec)
- mysql写存储过程的一些注意事项以及mysql的一些函数
- MySQL的一些注意事项
- mysql的一些注意事项
- MySql的一些注意事项
- mysql 存储过程、函数、索引、视图的一些系统命令
- MySQL触发器、存储过程、自定义函数、视图的一些笔记
- mysql 存储过程的一些问题
- 关于mysql存储过程的一些心得
- 关于使用存储过程的一些好处以及注意事项
- 关于使用存储过程的一些好处以及注意事项
- mysql基础的一些注意事项
- MySQL数据库的一些注意事项
- Mysql的一些数据类型及注意事项 以及版本的区别
- 【数据库】mysql和sql server写存储过程学到的一些知识
- 关于MySQL常用的一些函数以及一些计算
- 存储过程的好处和一些注意事项
- 存储过程的好处和一些注意事项
- 存储过程的好处和一些注意事项!
- JS中的运算符和表达式
- 异步fifo的设计(二)
- jQuery查找,获取和修改元素
- Load Data使用方法
- 接口的方法与变量
- mysql写存储过程的一些注意事项以及mysql的一些函数
- Eclipse安装Sequoyah插件 配置本机开发报错Native Development: Invalid path for NDK(路径无效) 解决方案
- Maven Archetypes Part 3: 怎样构建一个多模块工程?
- 自己救赎之路--Java(Execl导入)
- Integer==陷阱
- AngularJS Select(选择框)
- 用java中DefaultTableModel类实现对表格的增删操作
- 移动端的touch事件
- Mac中如何卸载pkg包