业务场景:
> 查询某一时间段内的数据。
应用
统计这个范围成立日期至今天,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;
运行结果