1. NOW、CURRENT_TIMESTAMP和SYSDATE
这些函数都能返回当前的系统时间,它们之间有区别吗?先来看个例子。
mysql>?SELECT?NOW(),CURRENT_TIMESTAMP(),SYSDATE()\G;
***************************?1. row?***************************
NOW():?2011-02-04?20:35:04
CURRENT_TIMESTAMP():?2011-02-04?20:35:04
SYSDATE():?2011-02-04?20:35:04
***************************?1. row?***************************
NOW():?2011-02-04?20:35:04
CURRENT_TIMESTAMP():?2011-02-04?20:35:04
SYSDATE():?2011-02-04?20:35:04
从上面的例子看来,3个函数都是返回当前的系统时间,再来看下面这个例子:
mysql>SELECT
->?????NOW(),
->???? CURRENT_TIMESTAMP(),
->???? SYSDATE(),
->???? SLEEP(2),
->?????NOW(),
->???? CURRENT_TIMESTAMP(),
->???? SYSDATE()\G
***************************?1. row?***************************
NOW():?2011-11-29?21:04:49
CURRENT_TIMESTAMP():?2011-11-29?21:04:49
SYSDATE():?2011-11-29?21:04:49
SLEEP(2):?0
NOW():?2011-11-29?21:04:49
CURRENT_TIMESTAMP():?2011-11-29?21:04:49
SYSDATE():?2011-11-29?21:04:51
1?row in?set?(2.00?sec)
->?????NOW(),
->???? CURRENT_TIMESTAMP(),
->???? SYSDATE(),
->???? SLEEP(2),
->?????NOW(),
->???? CURRENT_TIMESTAMP(),
->???? SYSDATE()\G
***************************?1. row?***************************
NOW():?2011-11-29?21:04:49
CURRENT_TIMESTAMP():?2011-11-29?21:04:49
SYSDATE():?2011-11-29?21:04:49
SLEEP(2):?0
NOW():?2011-11-29?21:04:49
CURRENT_TIMESTAMP():?2011-11-29?21:04:49
SYSDATE():?2011-11-29?21:04:51
1?row in?set?(2.00?sec)
在上面这个例子中人为地加入了SLEEP函数,让其等待2秒,这时可以发现SYSDATE返回的时间和NOW及CURRENT_TIMESTAMP是不同的,SYSDATE函数慢了2秒。究其原因是这3个函数有略微区别:
CURRENT_TIMESTAMP是NOW的同义词,也就是说两者是相同的。
SYSDATE函数返回的是执行到当前函数时的时间,而NOW返回的是执行SQL语句时的时间。