在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 forSYSDATE(), which returns the exact time at which it executes.
now()函数返回语句开始执行的时间;而sysdate()返回函数执行到的时间。
下面给出四种情况来理解两个函数的不同。
mysql>selectNOW(),SLEEP(5),NOW();
+---------------------+----------+---------------------+
|NOW()|SLEEP(5)|NOW()|
+---------------------+----------+---------------------+
|-09-2410:19:44|0|-09-2410:19:44|
+---------------------+----------+---------------------+
mysql>selectSYSDATE(),SLEEP(5),SYSDATE();
+---------------------+----------+---------------------+
|SYSDATE()|SLEEP(5)|SYSDATE()|
+---------------------+----------+---------------------+
|-09-2410:20:53|0|-09-2410:20:58|
+---------------------+----------+---------------------+
mysql>selectNOW(),SLEEP(5),SYSDATE();
+---------------------+----------+---------------------+
|NOW()|SLEEP(5)|SYSDATE()|
+---------------------+----------+---------------------+
|-09-2410:21:30|0|-09-2410:21:35|
+---------------------+----------+---------------------+
mysql>selectSYSDATE(),SLEEP(5),NOW();
+---------------------+----------+---------------------+
|SYSDATE()|SLEEP(5)|NOW()|
+---------------------+----------+---------------------+
|-09-2410:22:09|0|-09-2410:22:09|
+---------------------+----------+---------------------+
第一条语句:因为now()返回SQL语句开始执行的时间,所以尽管休眠5秒,两次调用的结果一致。
第二条语句:sysdate()返回调用该函数时的时间,所以休眠5秒,两次调用结果相差5秒。
第三条语句:先执行now()返回语句开始执行的时间,然后休眠5秒,所以两次时间相差5秒。
第四条语句:先执行sysdate()返回调用的时间,这个时间就是sql语句开始执行的时间,所以两个时间一致。
如果觉得《mysql数据库sysdate_mysql now() sysdate() 区别》对你有帮助,请点赞、收藏,并留下你的观点哦!