MySQL中的SYSDATE(),NOW(),CURRENT_TIMESTAMP,CURRENT_TIMESTAMP()之间的区别? [关闭]

问题描述 投票:7回答:2

据我所知,

SYSDATE(),
NOW(),
CURRENT_TIMESTAMP, and
CURRENT_TIMESTAMP() 

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

mysql database
2个回答
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转换。


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()的同义词。

© www.soinside.com 2019 - 2024. All rights reserved.