MySQL EVENT应用

需要在MySQL数据库中完成一个定时任务,把用到的知识点整理一下。

 

1.定时器

1)使用定时器之前查看定时任务是否打开

show variables like 'event_scheduler';

select @@event_scheduler;

2)启用定时任务

set global event_scheduler=ON;

set global event_scheduler=1;

 

重启数据库后,定时任务是不会自动启用的。

可以在 my.ini 的[mysqld]节中增加

event_scheduler=1 的配置。

或在启动命令加上"--event_scheduler=1"

如 mysqld ... --event_scheduler=1

 

3)创建事件

CREATE EVENT [IF NOT EXISTS] event_name

    ON SCHEDULE schedule

    [ON COMPLETION [NOT] PRESERVE]

    [ENABLE | DISABLE]

    [COMMENT 'comment']

    DO sql_statement;

 

schedule:

AT TIMESTAMP [+ INTERVAL interval] 

| EVERY interval [STARTS TIMESTAMP] [ENDS TIMESTAMP]

 

interval:

quantity {YEAR | QUARTER | MONTH | DAY | HOUR | MINUTE |

WEEK | SECOND | YEAR_MONTH | DAY_HOUR | DAY_MINUTE |

DAY_SECOND | HOUR_MINUTE | HOUR_SECOND | MINUTE_SECOND}

 

ON SCHEDULE 用于指定事件执行的时间。

ON COMPLETION 用于指定事件执行完后是否重复执行。

ENABLE | DISABLE 用于指定事先创建完后是否可用。

COMMENT 用于为事件增加备注。

DO 用于指定事件执行的sql语句。

 

4)修改事件

ALTER EVENT event_name

[ON SCHEDULE schedule]

[RENAME TO new_event_name]

[ON COMPLETION [NOT] PRESERVE]

[COMMENT 'comment']

[ENABLE | DISABLE]

[DO sql_statement]

 

5)删除事件

DROP EVENT [IF EXISTS] event_name

 

 

2.存储过程

具体语法不详细说明了,只记录一点:MySQL应该和Sybase数据库一样,支持两套语法规则。

一种是MySQL官方手册中介绍的,使用declare显式声明变量,set设置变量值。

另一种是可以不用declare声明变量,直接使用set隐式声明变量,同时设置变量值。

两种语法规则的区别在于,官方的提倡的用法可以使用start transaction,commit和rollback等事务语句,而隐式声明变量的语法不支持。

 

3.常用函数

3.1.日期字符串转换

1)日期转为字符串

DATE_FORMAT(date,format)

参考:http://www.w3school.com.cn/sql/func_date_format.asp

实例:DATE_FORMAT(NOW(), '%Y%m%d%H%i%s') 

结果: 20160501010101

 

2)字符串转为日期

STR_TO_DATE(string,format)

参考:http://www.mysqltutorial.org/mysql-str_to_date/

实例:STR_TO_DATE('20160501010101','%Y%m%d%H%i%s')

结果:Date类型的2016-05-01 01:01:01

 

3.2.日期加减

1)日期相加

DATE_ADD

DATE_ADD(date,INTERVAL expr type)

参考:http://www.w3school.com.cn/sql/func_date_add.asp

实例:DATE_ADD(NOW(),INTERVAL 1 DAY)

结果:当前时间的下一天

 

2)日期相减

DATE_SUB

DATE_SUB(date,INTERVAL expr type)

参考:http://www.w3school.com.cn/sql/func_date_sub.asp

实例:DATE_SUB(NOW(), INTERVAL 1 DAY)

结果:当前时间的前一天

 

3.3 日期相差

DATEDIFF

DATEDIFF(date1,date2)

参考:http://www.w3school.com.cn/sql/func_datediff_mysql.asp

实例:DATEDIFF('2016-05-01','2016-04-30')

结果:1

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值