MySQL中的SYSDATE(),NOW(),CURRENT_TIMESTAMP,CURRENT_TIMESTAMP()之间的区别?

时间:2015-02-04 06:55:47

标签: mysql database

据我所知,

SYSDATE(),
NOW(),
CURRENT_TIMESTAMP, and
CURRENT_TIMESTAMP() 
MySQL中的

是彼此的同义词。它们都返回相同的值,然后为什么MySQL提供所有这些值?是否有不同的场景我可以使用其中一个特定的?

2 个答案:

答案 0 :(得分:12)

它们并非都是同义词。

SYSDATE()NOW()不同,具有重要意义。作为示范:

SELECT NOW(), SYSDATE(), SLEEP(5), NOW(), SYSDATE()

输出可能如下所示:

2018-03-01 11:09:19   2018-03-01 11:09:19   0   2018-03-01 11:09:19   2018-03-01 11:09:24

所以,是的,在某些特定情况下,您可能希望使用SYSDATE()而不是NOW()

MySQL确实提供了几个可以返回相同结果的函数

DATE(NOW())CURRDATE()

我怀疑这很大程度上是由于希望通过更密切地匹配(尽可能适当)Oracle,SQL Server等使用的函数名称和语法,从而更容易从其他Relational DBMS转换。 / p>

答案 1 :(得分:9)

阅读http://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html#function_current-timestamp文件后,得出结论:

NOW()返回一个常量时间,指示语句开始执行的时间。 NOW()返回函数或触发语句开始执行的时间,但SYSDATE()返回执行它的确切时间。

CURRENT_TIMESTAMPCURRENT_TIMESTAMP()NOW()的同义词。