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