MySQL中SYSDATE()和NOW()的區別

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

相關文章
相關標籤/搜索