mysql - 根据同一行中的另一个 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
任何有关正确方法/语法的建议将不胜感激。
解决方案
UPDATE table
SET first_date = CONCAT_WS('-', YEAR(first_date),
MONTH(GREATEST(first_date, second_date)),
DAY(first_date));
推荐阅读
- python - Azure Functions (Python) blob 输出绑定。当名称只是输入消息的一部分时如何设置名称
- google-analytics - 使用相同的目标网址跟踪目标
- asp.net - 在亚马逊 EC2 中延迟加载内容 Web 应用程序
- c - 在C中将字符串拆分为两个变量
- spring-boot - 使用 Maven 将 springboot 可执行文件部署到 Nexus
- python - 从 np.float64 到 np.uint8 的快速转换(带有缩放和裁剪)
- azure - Azure Maps API 不返回现有地理实体的结果
- oraclereports - 使用 .XLS 模板的 Oracle EBS XML 发布者报告
- php - 限制通过 url 访问存储文件
- c# - Build string method using complex type Entity Framework ASP.NET C#