SQL查询中与时间相关的函数执行

时间:2016-02-09 15:04:38

标签: mysql sql

这是一个有趣的想法。

UPDATE table1
SET field1 = UNIX_TIMESTAMP()
WHERE
    field1 <= UNIX_TIMESTAMP() - 600
AND field2 > UNIX_TIMESTAMP() - 1000

三个时间戳是否会导致不同的值...或者MySQL是否有可能智能地评估这些值并在所有这三个中使用结果?

2 个答案:

答案 0 :(得分:1)

有趣的是,UNIX_TIMESTAMP()没有正确记录。对于NOW()documentation非常明确:

  

NOW()返回一个常量时间,表示时间   声明开始执行。 (在存储的函数或触发器中,   NOW()返回函数或触发语句的时间   开始执行。)这与SYSDATE()的行为不同   返回它执行的确切时间。

认为 UNIX_TIMETAMP()遵循与NOW()相同的规则,但我并非100%确定。

答案 1 :(得分:0)

我想你不想重复unix_timestamp()。

SET @now = NOW();
UPDATE table1
SET field1 = @now
WHERE
   field1 <= @now - 600
   AND field2 > @now - 1000;