MySQL中有5個函數須要計算當前時間的值:now(),sysdate(),curdate(),curtime(),unix_timestamp(); now()和sysdate()都是返回當前時間(形如 yyyy-mm-dd hh:mm:ss); curdate()返回當前時間的日期(形如 yyyy-mm-dd); curtime()返回當前時間(形如 hh:mm:ss) unix_timestam()返回當前時間的時間戳(形如 1464326059)sql
下面的sql是測試語句:函數
select now(),sysdate(),curdate(),curtime(),unix_timestamp();
下面是執行結果: 測試
sysdate()和其餘4個函數都是返回當前時間的相關信息,除了自己定義所返回的區別之外,sysdate()是返回執行這個函數的時間,其餘4個函數返回語句開始執行時間。unix
sysdate()和now()返回格式相同,拿它們2個作比較體驗一下上述說的區別: 下面是sql的測試語句:code
select now(),sleep(2),now(); select sysdate(),sleep(2),sysdate();
下面是執行結果: 圖片
能夠發現now()2個時間是相同的,由於都是取的開始執行sql的時間; 而sysdate()的2個時間不一樣,由於取的是執行這個函數的時間,2個函數之間sleep了2秒,因此也就相差2秒了。it
也正由於有這個區別,咱們通常在執行語句的時候,都是用NOW(),由於SYSDATE獲取當時實時的時間,這有可能致使主庫和從庫是執行的返回值是不同的,致使主從數據不一致。date