两个时间
开始时间 : ‘2000-11-24 15:10:00’
结束时间: ‘2222-12-25 15:12:24’
计算他们的时间差,精确到时分秒,如果某一项为0,就不显示,例如:0h1m0s,结果为:1m,
sql如下

SELECT 
CONCAT(
CASE 
WHEN
(TIMESTAMPDIFF(YEAR ,'2000-11-24 15:10:00' ,'2222-12-25 15:12:24'))  = 0
THEN ""
ELSE
concat(TIMESTAMPDIFF(YEAR ,'2000-11-24 15:10:00' ,'2222-12-25 15:12:24'),"y") 
END,
CONCAT(
CASE 
WHEN
(TIMESTAMPDIFF(MONTH ,'2000-11-24 15:10:00','2222-12-25 15:12:24')%12)  = 0
THEN ""
ELSE
concat(TIMESTAMPDIFF(MONTH ,'2000-11-24 15:10:00' ,'2222-12-25 15:12:24')%12 ,"M") 
END,
CONCAT (
CASE 
WHEN 
(TIMESTAMPDIFF(DAY ,'2000-11-24 15:10:00' ,'2222-12-25 15:12:24')%30)  = 0
THEN ""
ELSE
concat(TIMESTAMPDIFF(DAY ,'2000-11-24 15:10:00' ,'2222-12-25 15:12:24')%30 ,"d") 
END
,
CONCAT(CONCAT
(
CASE 
WHEN
(TIMESTAMPDIFF(HOUR ,'2000-11-24 15:10:00' ,'2222-12-25 15:12:24')%60)  = 0
THEN ""
ELSE
concat(TIMESTAMPDIFF(HOUR ,'2000-11-24 15:10:00' ,'2222-12-25 15:12:24')%60 ,"h") 
END
,
CONCAT(
CASE 
WHEN
(TIMESTAMPDIFF(MINUTE ,'2000-11-24 15:10:00' ,'2222-12-25 15:12:24')%60)  = 0
THEN ""
ELSE
concat(TIMESTAMPDIFF(MINUTE ,'2000-11-24 15:10:00' ,'2222-12-25 15:12:24')%60 ,"m") 
END,
(CASE  WHEN
(TIMESTAMPDIFF(SECOND ,'2000-11-24 15:10:00','2222-12-25 15:12:24')%60)  = 0
THEN ""
ELSE concat(TIMESTAMPDIFF(SECOND ,'2000-11-24 15:10:00' ,'2222-12-25 15:12:24')%60 ,"s") 
END
)))))))AS "时间" 

得到结果:

在这里插入图片描述

TIMESTAMPDIFF(单位,开始时间,结束时间)函数
其中单位可以为:
1、YEAR 年
2、QUARTER 季度
3、MONTH 月
4、WEEk 星期
5、DAY 天
6、HOUR 小时
7、MINUTE 分钟
8、SECOND 秒
9、FRAC_SECOND 毫秒

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐