mysql计算两个时间的时间差

业务场景:

> 查询某一时间段内的数据。

应用

统计这个范围成立日期至今天,1年以内、1年以上5年以内、5年以上的客户数分别是多少,以及成立日期为空的客户数
 select
		'1年以内' as category,
	    count(*) as quantity
	    from
	    CUSTOMER
	    where TIMESTAMPDIFF(year,START_DATE, now()) <= 1
    union 
	select
		'1到5年' as category,
	    count(*) as quantity
	    from
	    CUSTOMER
	    where TIMESTAMPDIFF(year,START_DATE, now()) > 1 and TIMESTAMPDIFF(year,START_DATE, now()) < 6
    union 
    select
		'5年以上' as category,
	    count(*) as quantity
	    from
	    CUSTOMER
	    where TIMESTAMPDIFF(year,START_DATE, now()) > 5
    union
	select
		'成立日期为空' as category,
	    count(*) as quantity
	    from
	    CUSTOMER 
	    where isnull(START_DATE) 

运行结果
在这里插入图片描述

知识点:

**

1、TIMESTAMPDIFF(unit,begin,end) 函数

TIMESTAMPDIFF函数是MySQL中的一个函数,用于计算两个日期或时间之间的差值。它的语法结构为:TIMESTAMPDIFF(unit, datetime_expr1, datetime_expr2)。

其中,unit是表示时间单位的参数,可以是以下值之一:

  • MICROSECOND:微秒
  • SECOND:秒
  • MINUTE:分钟
  • HOUR:小时
  • DAY:天
  • WEEK:周
  • MONTH:月
  • QUARTER:季度
  • YEAR:年

datetime_expr1和datetime_expr2是表示日期或时间的表达式,可以是具体的日期或时间值,也可以是列名或函数返回的值。

下面是一个使用TIMESTAMPDIFF函数的示例:

SELECT TIMESTAMPDIFF(DAY, '2024-01-01', '2024-01-18') day;

运行结果
在这里插入图片描述

这个示例计算了从2024年1月1日到2024年1月18日之间的天数差值,结果为17。

另外,TIMESTAMPDIFF函数还支持混合类型的参数,即datetime_expr1和datetime_expr2可以是不同的类型,例如一个是日期,一个是时间。

2、TIMEDIFF(dt1, dt2)

TIMEDIFF(dt1, dt2):计算两个TIME或DATETIME值之间的差值,两个必须为相同类型的参数,即TIME或DATETIME。 TIMEDIFF函数返回表示为时间值的dt1 - dt2的结果

SELECT TIMEDIFF('12:00:00', '15:00:00') timeDiff;

运行结果
在这里插入图片描述
如果任一参数为NULL,TIMEDIFF函数将返回NULL

SELECT TIMEDIFF('12:00:00', null) timeDiff;

运行结果
在这里插入图片描述