標籤:
在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語句開始執行的時間,所以兩個時間一致。
mysql now() sysdate() 區別