我需要获取MySQL请求中的当前日期(和时间00:00:00)纪元时间戳。我想用数学表达式做到这一点:(UNIX_TIMESTAMP() - (UNIX_TIMESTAMP()%86400))。
但这不止一次调用UNIX_TIMESTAMP();所以问题是 - 两个UNIX_TIMESTAMP()函数是否有可能返回不同的时间?在这种情况下,解决方法是什么?
或者MySQL可能执行一次UNIX_TIMESTAMP(),并用当前时间戳替换所有其他调用而不需要解决方法?
答案 0 :(得分:3)
您可以使用UNIX_TIMESTAMP(NOW()),因为NOW()
会在语句开始执行时返回时间戳,因此它会在同一语句中的多个调用中保持一致。
NOW()返回一个表示时间的常量时间 声明开始执行。 (在存储的函数或触发器中, NOW()返回函数或触发语句的时间 开始执行。)
答案 1 :(得分:2)
SELECT @ut:=UNIX_TIMESTAMP(), (@ut - (@ut % 86400)) AS ep;
答案 2 :(得分:1)
您可以简单地使用UNIX_TIMESTAMP()
,这将返回当前查询的开始时间。
这并没有明确记录 - 文档一般性地引用了返回当前日期或时间的函数的稳定性......" - 但事实确实如此。