UNIX_TIMESTAMP()在MySQL请求中重复多次

时间:2015-03-07 14:20:04

标签: mysql unix-timestamp

我需要获取MySQL请求中的当前日期(和时间00:00:00)纪元时间戳。我想用数学表达式做到这一点:(UNIX_TIMESTAMP() - (UNIX_TIMESTAMP()%86400))。

但这不止一次调用UNIX_TIMESTAMP();所以问题是 - 两个UNIX_TIMESTAMP()函数是否有可能返回不同的时间?在这种情况下,解决方法是什么?

或者MySQL可能执行一次UNIX_TIMESTAMP(),并用当前时间戳替换所有其他调用而不需要解决方法?

3 个答案:

答案 0 :(得分:3)

您可以使用UNIX_TIMESTAMP(NOW()),因为NOW()会在语句开始执行时返回时间戳,因此它会在同一语句中的多个调用中保持一致。

  

NOW()返回一个表示时间的常量时间   声明开始执行。 (在存储的函数或触发器中,   NOW()返回函数或触发语句的时间   开始执行。)

答案 1 :(得分:2)

SELECT @ut:=UNIX_TIMESTAMP(), (@ut - (@ut % 86400)) AS ep;

答案 2 :(得分:1)

您可以简单地使用UNIX_TIMESTAMP(),这将返回当前查询的开始时间。

这并没有明确记录 - 文档一般性地引用了返回当前日期或时间的函数的稳定性......" - 但事实确实如此。