熟悉SQL Server的人都知道,它有一个很有用的功能,waitfor time和waitfor delay,前者表示在某个时间执行,后者表示等待多长时间执行。在我们测试功能和定时执行的时候特别有用,那么我们在mysql中如何实现呢?

mysql只有一个定时函数,sleep(),我们只能通过这个函数来想办法了。

sleep()说明:

mysql> select id from c;
+------+
| id |
+------+
| 1 |
| 2 |
+------+
2 rows in set (0.00 sec)

mysql> select sleep(1),id from c;
+----------+------+
| sleep(1) | id |
+----------+------+
| 0 | 1 |
| 0 | 2 |
+----------+------+
2 rows in set (2.00 sec)

sleep(duration),表示等待的时间,参数以秒为单位。可以看出此时的sleep(),代表每次执行则等待1秒,有多少行数便等待多长时间。

延时执行:

有了等待这个概念,要延时就简单了,我们稍微变通下,先执行sleep(1),再执行语句。

mysql> delimiter //
mysql> select sleep(1);
-> select id from c;
-> //
+----------+
| sleep(1) |
+----------+
| 0 |
+----------+
1 row in set (1.00 sec)

+------+
| id |
+------+
| 1 |
| 2 |
+------+
2 rows in set (1.01 sec)

此时可以看到已经实现了等待1秒的效果。

定时执行:

其实,定时执行的话完全可以通过event来实现,但是,追求精简便捷的我们完全不能忍受这么繁琐的步骤,必须在一个界面来实现。

既然有了延时,而我们又知道执行的时间,那我们只需要知道现在距离执行时间有多少秒就能实现了,于是,我们只缺一个计算时间差函数TIMESTAMPDIFF(unit,datetime_expr1,datetime_expr2)。

此函数类似sql server中的datediff()函数,用法都是一样的。

mysql> set @datestop = '2015-08-21 15:50';
-> set @i = timestampdiff(second,now(),@datestop);
-> select sleep(@i);
-> select now();
-> select id from c;
-> //
Query OK, 0 rows affected (0.00 sec)

Query OK, 0 rows affected (0.00 sec)

+-----------+
| sleep(@i) |
+-----------+
| 0 |
+-----------+
1 row in set (1 min 51.00 sec)

+---------------------+
| now() |
+---------------------+
| 2015-08-21 15:50:00 |
+---------------------+
1 row in set (1 min 51.01 sec)

+------+
| id |
+------+
| 1 |
| 2 |
+------+
2 rows in set (1 min 51.03 sec)

mysql定时执行及延时执行,实现类似sql server waitfor功能的更多相关文章

  1. mysql定时脚本(event),类似oracle的job

    mysql定时脚本(event),类似oracle的job   我有2张表:tb_push_data 和 tb_push_data_log 现在需要每隔一段时间将tb_push_data 符合条件的 ...

  2. 如何將 MySQL 資料庫轉移到 Microsoft SQL Server 與 Azure SQL Database

    MySQL 是相當常用之資料庫伺服器,而微軟雲端服務 Microsoft Azure 上 Azure SQL Database 是一個功能強大且經濟實惠的選擇,透過本篇文章,使用 SQL Server ...

  3. hibernate mysql 分页时报错 显示的代码和sql server 类似 select top 1……

    [ERROR][com.alibaba.druid.filter.stat.StatFilter]merge sql error, dbType mysql, sql : select top 1 d ...

  4. 说说我对SQL语句执行顺序的理解,以SQL Server为例

    有人说SQL语句难学,其实并不难!只要掌握了基本的语句执行顺序,用程序化的思维分析结构,再难的问题也会迎刃而解! 假设有如下表emp 现在要求 列出员工姓名(ename)中不含A的所有人按照部门编号( ...

  5. SQL Server 执行计划缓存

    标签:SQL SERVER/MSSQL SERVER/数据库/DBA/内存池/缓冲区 概述 了解执行计划对数据库性能分析很重要,其中涉及到了语句性能分析与存储,这也是写这篇文章的目的,在了解执行计划之 ...

  6. 第1/24周 SQL Server 如何执行一个查询

    大家好,欢迎来到第1周的SQL Server性能调优培训.在我们进入SQL Server性能调优里枯燥难懂的细节内容之前,我想通过讲解SQL Server如何执行一个查询来建立基础.这个部分非常重要, ...

  7. SQL Server安全(6/11):执行上下文与代码签名(Execution Context and Code Signing)

    在保密你的服务器和数据,防备当前复杂的攻击,SQL Server有你需要的一切.但在你能有效使用这些安全功能前,你需要理解你面对的威胁和一些基本的安全概念.这篇文章提供了基础,因此你可以对SQL Se ...

  8. 了解Sql Server的执行计划

    前一篇总结了Sql Server Profiler,它主要用来监控数据库,并跟踪生成的sql语句.但是只拿到生成的sql语句没有什么用,我们可以利用这些sql语句,然后结合执行计划来分析sql语句的性 ...

  9. 第六篇 SQL Server安全执行上下文和代码签名

    本篇文章是SQL Server安全系列的第六篇,详细内容请参考原文. SQL Server决定主体是否有必要的执行代码权限的根本途径是其执行上下文规则.这一切都可能复杂一个主体有执行代码的权限,但是却 ...

随机推荐

  1. 关于Android WebView内容不同屏幕兼容处理

    最近团队里项目开发APP时,其中有个界面要用到WebView来显示,而不用原生的控件. 开发这个界面的时候遇到一个问题,就是Android的碎片化导致有众多屏幕分辨率,不同分辨率的屏幕对这个界面Web ...

  2. 电脑远程控制手机2—webkey

    远程控制神器,这个是真真切切试验成功了.我用的手机是OPPOR817和华为A199. 网上去下载webkey,http://soft.shouji.com.cn/down/23169.html 然后安 ...

  3. NGUI类之间的关系和架构

    NGUI Drawcall 1.使用同一个altals的元素尽量放在同一个UIPanel下面,在NGUI中,它消耗的drawcall是以每个Panel为独立计算单位进行计算的. 2.如果一个UIPan ...

  4. 完整的开发一个ContentProvider步骤

    1.定义自己的ContentProvider类,该类需要继承Android提供的ContentProvider基类.2.向Android系统注册这个"网站",也就是在Android ...

  5. Altium Designer多图纸原理图设计方法探讨

    1 图纸结构 包括层次式图纸的连接关系是纵向的,也就是某一层次的图纸只能和相邻的上级或下级有关系,另一种即扁平式图纸的连接关系是横向的,任何两张图纸之间都可以建立信号连接. 2 网络连接方式 Alti ...

  6. 【笔试&面试】C#中的程序集

    1.      C#中的程序集(Assembly) 答:程序集是包含一个或多个类型定义文件和资源文件的集合.它允许我们分离可重用类型的逻辑表示和物理表示. 程序集是一个可重用.可实施版本策略和安全策略 ...

  7. orientationchange的兼容性

    移动webapp监测屏幕旋转时常用onorientationchange事件,用此事件获取改变后的屏幕尺寸时需要注意: 1. iphone中,可立即获取改变后的屏幕尺寸. 2. android中,获取 ...

  8. 【android】adb连接几个常见问题(遇到再新增)

    不知道为什么,每次连接手机,都提示 adb server is out of date,偶尔也会提示not found 每次去百度,都好多方法---终于有一种方法非常靠谱,遂,记录之--- 问题一:o ...

  9. 我为什么放弃了win7系统

    作为一个软件开发者,由于要常年维护一些老系统,所以非常看中win7对一些稍老一点软件的兼容性,可它还是让我失望了: 如果没有特殊手段,sqlserver2000是不能向导式安装成功的: 之前公司的主要 ...

  10. C++中输出流运算符的重载

    cout是ostream类的对象,cin是istream类的对象. 我们平时用的cout<<就相当于cout.operator<<(...).也就是说正常使用(不对operat ...