mysql now() sysdate() 区别

允我心安 提交于 2019-12-01 07:47:53

在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语句开始执行的时间,所以两个时间一致。

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!