您的位置:首页 > 数据库 > MySQL

mysql now() sysdate() 区别

2015-09-24 00:00 716 查看
在mysql中,now()和sysdate()两个函数都可以返回当前时间,但是两者是有区别的。下面我们先来看一下mysql的官方解释:

NOW()
returns a constant time that indicates the time at which the statement began to execute.

This differs from the behavior for
SYSDATE()
, which returns the exact time at which it executes.

now()函数返回语句开始执行的时间;而sysdate()返回函数执行到的时间。

下面给出四种情况来理解两个函数的不同。

mysql> select NOW(),SLEEP(5),NOW();
+---------------------+----------+---------------------+
| NOW()               | SLEEP(5) | NOW()               |
+---------------------+----------+---------------------+
| 2015-09-24 10:19:44 |        0 | 2015-09-24 10:19:44 |
+---------------------+----------+---------------------+


mysql> select SYSDATE(),SLEEP(5),SYSDATE();
+---------------------+----------+---------------------+
| SYSDATE()           | SLEEP(5) | SYSDATE()           |
+---------------------+----------+---------------------+
| 2015-09-24 10:20:53 |        0 | 2015-09-24 10:20:58 |
+---------------------+----------+---------------------+


mysql> select NOW(),SLEEP(5),SYSDATE();
+---------------------+----------+---------------------+
| NOW()               | SLEEP(5) | SYSDATE()           |
+---------------------+----------+---------------------+
| 2015-09-24 10:21:30 |        0 | 2015-09-24 10:21:35 |
+---------------------+----------+---------------------+


mysql> select SYSDATE(),SLEEP(5),NOW();
+---------------------+----------+---------------------+
| SYSDATE()           | SLEEP(5) | NOW()               |
+---------------------+----------+---------------------+
| 2015-09-24 10:22:09 |        0 | 2015-09-24 10:22:09 |
+---------------------+----------+---------------------+


第一条语句:因为now()返回SQL语句开始执行的时间,所以尽管休眠5秒,两次调用的结果一致。

第二条语句:sysdate()返回调用该函数时的时间,所以休眠5秒,两次调用结果相差5秒。

第三条语句:先执行now()返回语句开始执行的时间,然后休眠5秒,所以两次时间相差5秒。

第四条语句:先执行sysdate()返回调用的时间,这个时间就是sql语句开始执行的时间,所以两个时间一致。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: