MySQL中有5個函數需要計算目前時間的值:
NOW.傳回時間,格式如:2012-09-23 06:48:28
CURDATE,傳回時間的日期,格式如:2012-09-23
CURTIME,傳回時間,格式如:06:48:28
UNIX_TIMESTAMP,傳回時間整數戳,如:1348408108
SYSDATE,傳回時間,格式和time()函數傳回時間一樣,但是有差別。
除了本身定義所傳回的差別以外,另一個差別是:前四個函數都是傳回基于語句的開始執行時間,而SYSDATE傳回time的值。
通過比較,可以發現這兩個函數的差別:
NOW()執行如下:
mysql> select now(),sleep(2),now();
+---------------------+----------+---------------------+
| now() | sleep(2) | now() |
| 2012-09-23 06:54:29 | 0 | 2012-09-23 06:54:29 |
1 row in set (2.00 sec)
其傳回的兩個值是一樣的,因為都是表示語句開始執行的時間。
SYSDATE執行如下:
mysql> select sysdate(),sleep(2),sysdate();
| sysdate() | sleep(2) | sysdate() |
| 2012-09-23 06:55:00 | 0 | 2012-09-23 06:55:02 |
1 row in set (2.01 sec)
也正因為有這個差別,我們一般在執行語句的時候,都是用NOW(),因為SYSDATE擷取當時實時的時間,這有可能導緻主庫和從庫是執行的傳回值是不一樣的,導緻主從資料不一緻。
其上其它函數執行如下:
