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

Rav*_*ani 10 mysql database

据我所知,

SYSDATE(),
NOW(),
CURRENT_TIMESTAMP, and
CURRENT_TIMESTAMP() 
Run Code Online (Sandbox Code Playgroud)

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

spe*_*593 14

它们并非都是同义词.

SYSDATE()与...有很大不同NOW().作为示范:

SELECT NOW(), SYSDATE(), SLEEP(5), NOW(), SYSDATE()
Run Code Online (Sandbox Code Playgroud)

输出可能如下所示:

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
Run Code Online (Sandbox Code Playgroud)

所以,是的,有一些特定的场景,你可能想要使用SYSDATE()而不是NOW().

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

DATE(NOW())CURRDATE()

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


Rav*_*ani 14

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

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

而且CURRENT_TIMESTAMP,CURRENT_TIMESTAMP()是同义词NOW().