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