Mysql 根据列的值更改日期\添加的单位

Mysql 根据列的值更改日期\添加的单位,mysql,Mysql,我有一个表来存储上次运行操作的日期时间,我还有一个频率列,它是操作应该运行的频率,以月为单位 +----+---------------------+-----------+ | id | last_run | frequency | +----+---------------------+-----------+ | 1 | 2014-05-22 00:00:00 | 12 | |----|---------------------|-----------

我有一个表来存储上次运行操作的日期时间,我还有一个频率列,它是操作应该运行的频率,以月为单位

+----+---------------------+-----------+
| id | last_run            | frequency |
+----+---------------------+-----------+
| 1  | 2014-05-22 00:00:00 |    12     |
|----|---------------------|-----------|
| 2  | 2015-05-15 00:00:00 |   0.25    |
+----+---------------------+-----------+
我使用以下查询获取下一次运行操作的日期:

从表中选择日期添加上次运行,间隔频率月作为下一次运行

由于频率值,无法在第二条记录上返回正确的下次运行日期

是否可以添加一个条件,以便在频率=0.25时

频率变为7 月变日
这是我目前正在重构的旧系统的一部分。存储间隔类型DAY/MONTH/YEAR并将其传递给查询会更好吗?还是有办法将上述条件添加到查询中?

我认为您必须使用大格语句。大概是这样的:

select (case when frequency >= 1
             then DATE_ADD(last_run, INTERVAL frequency MONTH)
             when frequency < 1
             then DATE_ADD(last_run, INTERVAL frequency*28 DAY)
             ELSE DATE_ADD(last_run, INTERVAL 1 MONTH) --Adding for may be null values
        end)