mysql now() sysdate() 區別

在mysql中,now()和sysdate()兩個函數均可以返回當前時間,可是二者是有區別的。下面咱們先來看一下mysql的官方解釋:
html

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

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

now()函數返回語句開始執行的時間;而sysdate()返回函數執行到的時間。函數

下面給出四種狀況來理解兩個函數的不一樣。
spa

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秒,兩次調用的結果一致。code

第二條語句:sysdate()返回調用該函數時的時間,因此休眠5秒,兩次調用結果相差5秒。htm

第三條語句:先執行now()返回語句開始執行的時間,而後休眠5秒,因此兩次時間相差5秒。get

第四條語句:先執行sysdate()返回調用的時間,這個時間就是sql語句開始執行的時間,因此兩個時間一致。it

相關文章
相關標籤/搜索