首页 > 解决方案 > 根据同一行中的另一个 DATETIME 值在 MYSQL 中设置 MONTH

问题描述

我在同一张表的每一行中有两个日期字段。我试图弄清楚如何根据一个日期的 MONTH 是大于还是小于另一个日期来更新它。

这是我需要执行的操作:如果第二个日期大于第一个日期,则将第一个日期的 MONTH 设置为等于第二个日期的 MONTH。

因此,如果第一个日期是“2021-03-16”,第二个日期是“2021-05-01”,我想将第一个日期更新为“2021-05-16”。

或者,对于一个不太冗长的描述,我该如何转换这个......

数据集:

id date_1       date_2
 1 2021-03-16   2021-05-01
 2 2021-03-16   2021-02-01

……进入这个……

id date_1       date_2
 1 2021-05-16   2021-05-01
 2 2021-03-16   2021-02-01

任何有关正确方法/语法的建议将不胜感激。

标签: mysqldate

解决方案


UPDATE table
SET first_date = CONCAT_WS('-', YEAR(first_date), 
                                MONTH(GREATEST(first_date, second_date)), 
                                DAY(first_date));

推荐阅读