据我所知,
SYSDATE(),
NOW(),
CURRENT_TIMESTAMP, and
CURRENT_TIMESTAMP()
在MySQL中是彼此的同义词。它们都返回相同的值,然后为什么MySQL提供所有这些值?是否有不同的场景我可以使用其中一个特定的?
它们并非都是同义词。
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转换。
在阅读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()
的同义词。