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