列last_ran
的数据类型为日期时间,并且frequency
设置为:“ 1天”或“ 1周”或“ 1个月”或“ 1年” ...
这是我要执行的MySQL语句:
SELECT * FROM `cron_jobs` WHERE NOW() > `cron_jobs`.`last_ran` + INTERVAL `cron_jobs`.`frequency` LIMIT 1
但是我遇到以下错误:
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'LIMIT 1' at line 1
答案 0 :(得分:1)
尝试指定间隔类型:
INTERVAL `cron_jobs`.`frequency` SECOND
INTERVAL
命令采用特定形式,并且不执行字符串扩展插值。每个参数必须在SQL中表示。您总是可以在应用程序层中注入它,但是要小心,在可能的情况下,将其拆分为占位符值。
您仅需使用一个单位就可以以秒,天或其他任何形式指定间隔,因此,一天大概会变成86400秒。由于诸如夏令时之类的因素,这种方法会慢慢漂移。
如果您使用的月份和年份的天数没有特定的长度,请注意。