混合mysql列与间隔?

时间:2018-08-30 22:59:38

标签: mysql

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

1 个答案:

答案 0 :(得分:1)

尝试指定间隔类型:

INTERVAL `cron_jobs`.`frequency` SECOND

INTERVAL命令采用特定形式,并且不执行字符串扩展插值。每个参数必须在SQL中表示。您总是可以在应用程序层中注入它,但是要小心,在可能的情况下,将其拆分为占位符值。

您仅需使用一个单位就可以以秒,天或其他任何形式指定间隔,因此,一天大概会变成86400秒。由于诸如夏令时之类的因素,这种方法会慢慢漂移。

如果您使用的月份和年份的天数没有特定的长度,请注意。