MySQL DATE_ADD() 函数

标签 mysql sql

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

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

这很完美,但是我想要实现的是这样的,但似乎不起作用

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

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

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

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

最佳答案

您可以使用CASE 表达式

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;

关于MySQL DATE_ADD() 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53355788/

相关文章:

mysql - 开始停止时差按刻钟分组

MySQL - 一对多联接 - 仅返回 "One"表中 1 行的结果

c# - 在多个 ninject 绑定(bind)中重用 SqlConnection

mysql - 添加您在 mysql 中创建的列?

sql - mysql查询题,搞不懂

mysql - 显示基于 'category' 字段的行

mysql - 是否可以使用 mongrel 创建delayed_job 作为Windows 服务?

mysqldump 在 crontab 中不起作用

mysql - Amazon Aurora 数据库集群无法正确自动平衡

mysql - 连接同一张表会产生太多结果