在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