sql需求:计算路龄并判断属于哪一类路龄,需要用当前时间减去道路竣工时间,利用日期函数计算时间差。

利用函数计算2个时间的时间差:TIMESTAMPDIFF(interval,datetime_expr1,datetime_expr2)
interval参数的取值范围:
SECOND 秒 SECONDS
MINUTE 分钟 MINUTES
HOUR 时间 HOURS
DAY 天 DAYS
MONTH 月 MONTHS
YEAR 年 YEARS
例:查询当前时间减去创建时间
CURDATE()取当前时间,被减去的时间为数据库字段construction_end_time
SELECT TIMESTAMPDIFF(MONTH,a.construction_end_time,CURDATE())
FROM base_road_construction_year a where a.del_flag = 0;
最终需求sql:
select ed.value 路龄类型,SUM(t.length) 路龄长度,ed.first_diff firstDiff,ed.second_diff secondDiff from
(select (a.pile_end-a.pile_start) length,
case when (TIMESTAMPDIFF(MONTH,a.construction_end_time,CURDATE())/12) = 0 then -1
else TIMESTAMPDIFF(MONTH,a.construction_end_time,CURDATE())/12
end roadAge
from base_road_construction_year a LEFT JOIN base_road b on a.road_id = b.id
where a.del_flag = 0 and b.del_flag = 0) t,expert_diffvalue ed
where t.roadAge > ed.first_diff and t.roadAge <= ed.second_diff
group by ed.id order by ed.first_diff;
该博客介绍如何在MySQL中计算道路竣工时间与当前时间的时间差,并根据时间差进行路龄分类。通过使用TIMESTAMPDIFF函数结合CASE语句,可以计算路龄并将其划分到不同的类别中。
2035

被折叠的 条评论
为什么被折叠?



