根据同一行中的另一个DATETIME值在MYSQL中设置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

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

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

您可以向date_1添加两个日期中的月数差:

UPDATE tablename
SET date_1 = date_1 + INTERVAL MONTH(date_2) - MONTH(date_1) month
WHERE date_1 < date_2

请参阅演示
结果:

日期112021-05-16022-05-012021-03-16

相关内容

最新更新