我基本上有一个带有以下列的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)
答案 0 :(得分:1)
您不希望每次运行将NOW()
除以秒数 - 您在计算时已经进行了除法。你想减去。
SELECT *
FROM table
WHERE last_run < DATE_SUB(NOW(), INTERVAL (time/package) SECOND)
您使用UNIX_TIMESTAMP
在EDIT中进行的计算是等效的,因此它应该有效。