【发布时间】:2021-01-25 12:03:31
【问题描述】:
我有两个表,即车辆和车辆维护。
车辆
-----------------------------------
| v_id | v_name | v_no |
-----------------------------------
| 1 | car1 | car123 |
-----------------------------------
| 2 | car2 | car456 |
-----------------------------------
车辆维护
-----------------------------------------------------------------------
| v_main_id | v_id | v_main_date | v_main_remainder |
-----------------------------------------------------------------------
| 1 | 1 | 2020/10/10 | 1 |
| 2 | 1 | 2020/10/20 | 2 |
| 3 | 2 | 2020/10/04 | 365 |
| 4 | 2 | 2020/10/15 | 5 |
-----------------------------------------------------------------------
我想获取每辆汽车的维护详细信息,即 car2 维护日期是 2020/10/15,我想根据 v_main_remainder 字段检查下一个维护日期。这意味着下一个维护日期将是 2020/10/20(维护日期增加 5 天)。我还想计算下一个维护日期的剩余天数。假设今天是 2020/10/10,那么它会显示还剩 10 天。
这是我的查询
SELECT
v.v_id,
v.v_name,
v.v_no,
max(vm.v_main_date) as renewal_date,
datediff(
DATE_ADD(
max(vm.v_main_date), INTERVAL +vm.v_main_remainder day
),
now()
) as day_left
FROM vehicle as v, vehicle_maintenance as vm
GROUP BY v.v_id
但问题是从第一行获取的 date_add 函数中的 vm.v_main_remainder。
这是结果
-----------------------------------------------------------------------
| v_id | v_name | v_no | renewal_date | day_left |
-----------------------------------------------------------------------
| 1 | car1 | car123 | 2020/10/20 | 11 |
-----------------------------------------------------------------------
| 2 | car2 | car456 | 2020/10/15 | 370 |
-----------------------------------------------------------------------
【问题讨论】:
标签: mysql sql datetime inner-join greatest-n-per-group