在查询中创建间隔,如果有效则返回

时间:2014-01-10 01:34:00

标签: mysql sql

我基本上有一个带有以下列的mySQL表:

时间,这是int(11)并且将保持指定值(秒数)

,它是int(11)并将保存另一个指定值(一天内要执行的操作量)

last_run ,它是int(11)并将保存上次使用SELECT查询行的日期时间值

该表的一个例子就是这样

time     |     package    |        last_run
--------------------------------------------------
86400    |      1000      |    0000-00-00 00:00:00
86400    |      1000      |    0000-00-00 00:00:00
86400    |      1000      |    0000-00-00 00:00:00

我想基本上执行SELECT查询,如下所示

SELECT 
    * 
FROM 
    `table` 
WHERE 
    `divide time by package` AS total_seconds_between_each_run 
AND 
    `last_run` OLDER THAN (NOW() / total_seconds_each_run)

所以我想要做的只是抓取比total_seconds_between_each_run更早的行,因为我只希望每隔指定的时间间隔执行一次动作

我理解 mySQL 查询的语法不正确,但这是我想要做的“示例”,如果可能的话,使用mySQL

修改

以下是否会有以下工作?

(UNIX_TIMESTAMP() - UNIX_TIMESTAMP(last_run)) > (time / package)

1 个答案:

答案 0 :(得分:1)

您不希望每次运行将NOW()除以秒数 - 您在计算时已经进行了除法。你想减去。

SELECT *
FROM table
WHERE last_run < DATE_SUB(NOW(), INTERVAL (time/package) SECOND)

您使用UNIX_TIMESTAMP在EDIT中进行的计算是等效的,因此它应该有效。