MYSQL中NOW、CURRENT_TIMESTAMP、SYSDATE的區別

MYSQL中NOW、CURRENT_TIMESTAMP、SYSDATE的區別

mysql> select NOW(),CURRENT_TIMESTAMP(),SYSDATE();
  • 1

執行上邊的SQL,結果以下:mysql

+---------------------+---------------------+---------------------+
| NOW()               | CURRENT_TIMESTAMP() | SYSDATE()           |
+---------------------+---------------------+---------------------+
| 2016-12-30 17:00:46 | 2016-12-30 17:00:46 | 2016-12-30 17:00:46 |
+---------------------+---------------------+---------------------+
  • 1
  • 2
  • 3
  • 4
  • 5

這三個函數都是返回當前系統時間。sql

那麼,他們之間有區別嗎?函數

咱們嘗試提升時間的精度,再次查看結果:spa

mysql> select NOW(6),CURRENT_TIMESTAMP(6),SYSDATE(6);
  • 1

如上,咱們給這幾個函數加上參數值,這個參數值表示秒後邊的小數位數,此值最大爲6,表示精確到微秒級別,默認爲0,表示精確到秒。 
這時,咱們獲得的結果是:code

+----------------------------+----------------------------+----------------------------+
| NOW(6)                     | CURRENT_TIMESTAMP(6)       | SYSDATE(6)                 |
+----------------------------+----------------------------+----------------------------+
| 2016-12-30 17:03:37.619547 | 2016-12-30 17:03:37.619547 | 2016-12-30 17:03:37.619635 |
+----------------------------+----------------------------+----------------------------+
  • 1
  • 2
  • 3
  • 4
  • 5

能夠看到,NOW和CURRENT_TIMESTAMP獲得的結果同樣,而SYSDATE的結果稍大於前兩個的結果。select

若是是用5.5或更低版本的MYSQL,這些函數是不支持添加參數的。爲了比較這三個函數的區別,能夠使用下邊的SQL:時間

mysql> select NOW(),CURRENT_TIMESTAMP(),SYSDATE(),SLEEP(2),NOW(),CURRENT_TIMESTAMP(),SYSDATE();
  • 1

其中,SLEEP(2)是讓SQL執行過程當中等待兩秒再繼續執行。 
此時,獲得的結果爲:co

+---------------------+---------------------+---------------------+----------+---------------------+---------------------+---------------------+
| NOW()               | CURRENT_TIMESTAMP() | SYSDATE()           | SLEEP(2) | NOW()               | CURRENT_TIMESTAMP() | SYSDATE()           |
+---------------------+---------------------+---------------------+----------+---------------------+---------------------+---------------------+
| 2016-12-30 17:01:24 | 2016-12-30 17:01:24 | 2016-12-30 17:01:24 |        0 | 2016-12-30 17:01:24 | 2016-12-30 17:01:24 | 2016-12-30 17:01:26 |
+---------------------+---------------------+---------------------+----------+---------------------+---------------------+---------------------+
  • 1
  • 2
  • 3
  • 4
  • 5

能夠看到,NOW和CURRENT_TIMESTAMP獲得的結果始終相同,而SYSDATE在中斷先後則相差了2秒。版本

實際上,NOW和CURRENT_TIMESTAMP沒有任何區別,他們都表示的是SQL開始執行時的系統時間;而SYSDATE則表示執行此函數時的系統時間。參數

相關文章
相關標籤/搜索