MySQL的时间差函数TIMESTAMPDIFF、DATEDIFF。
一、基本使用方法
1.1 TIMESTAMPDIFF
/* TIMESTAMPDIFF特点: 1.第三个参数距离第二个参数的第一个参数的个数。 2.结果是第三个参数-第二个参数后向下取整。 */ select TIMESTAMPDIFF(DAY, ‘2020-04-01 23:59:59‘, ‘2020-04-02 00:00:00‘) -- 结果:0 select TIMESTAMPDIFF(DAY, ‘2020-04-01 00:00:00‘, ‘2020-04-02 00:00:00‘) -- 结果:1 select TIMESTAMPDIFF(DAY, ‘2020-04-01 00:00:00‘, ‘2020-04-02 23:59:59‘) -- 结果:1 select TIMESTAMPDIFF(DAY, ‘2020-04-01 00:00:00‘, ‘2020-04-03 00:00:00‘) -- 结果:2
1.2 DATEDIFF
/* DATEDIFF特点: 取第一个参数的日期-取第二个参数的日期; 解决只与日期有关,二与时间无关。 */ select DATEDIFF(‘2020-04-01 23:59:59‘, ‘2020-04-02 00:00:00‘) -- 结果:-1 select DATEDIFF(‘2020-04-01 00:00:00‘, ‘2020-04-02 00:00:00‘) -- 结果:-1 select DATEDIFF(‘2020-04-01 00:00:00‘, ‘2020-04-02 23:59:59‘) -- 结果:-1 select DATEDIFF(‘2020-04-01 00:00:00‘, ‘2020-04-03 00:00:00‘) -- 结果:-2 select DATEDIFF( ‘2020-04-03‘,‘2020-03-01‘) -- 结果:33
二、使用时的注意点。
2.1 进行case 分类时TIMESTAMPDIFF最好不要和=号连用。
比如,我想获得24小时内和24校外两种情况。
case when TIMESTAMPDIFF(DAY, ‘时间1‘, ‘时间2‘)<1 then ‘24小时内‘ else ‘24小时外‘ end as ‘时间段‘
如果我选择了 <= 1。由下面的基本使用方法可知。超过24小时的也会被包含进去。
select TIMESTAMPDIFF(DAY, ‘2020-04-01 00:00:00‘, ‘2020-04-02 23:59:59‘) -- 结果:1