关于sql:MySQL DATE_ADD()函数

MySQL DATE_ADD() Function

我正在尝试通过将天/周/月添加到现有日期中来基于现有日期列来更新日期列

1
2
update Form_1 set `DateP1`= DATE_ADD(`Date`, INTERVAL `P1` week) where
`id`=1;

这很完美,但是我想要达到的效果似乎不起作用

1
2
update Form_1 set `DateP1`= DATE_ADD(`Date`, INTERVAL `P1` `TimeType`) where
`id`=1;

这里,TimeType是表中的另一列,其中包含日,周,月等值,基本上是时间信息。我希望能够动态地从列中提取值,而不是

1
DATE_ADD(`Date`, INTERVAL `P1` week)

星期是静态的。有没有办法实现这一目标。我可以使用任何其他替代方法,只要我可以从TimeType表中动态提取值即可。


您可以使用CASE表达式

1
2
3
4
5
6
7
update Form_1
set `DateP1`= CASE `TimeType`
                   WHEN 'day' THEN DATE_ADD(`Date`, INTERVAL `P1` day)
                   WHEN 'week' THEN DATE_ADD(`Date`, INTERVAL `P1` week)
                   ...
              END
WHERE `id`=1;