今天碰到一個需要查詢某一個時間距離當前時間過去了多久修改內容值的功能,總結一下mysql中計算時間差的函數的應用
1. TIMESTAMPDIFF(時間單位,參數1,參數2)
可以設置參數,可以精確到天(DAY),小時(HOUR),分鐘(MINUTE),秒(SECOND),計算機制爲參數2-參數1,最後結果爲數字,單位爲第一個參數設置的值
- 計算2019-09-20 23:59:00到當前時間的天數
select TIMESTAMPDIFF(DAY, '2019-09-20 23:59:00', now());
- 計算2019-08-20 09:00:00到當前時間的小時數
select TIMESTAMPDIFF(HOUR, '2019-08-20 09:00:00', now());
- 計算2019-09-20 09:00:00到當前時間的分鐘數
select TIMESTAMPDIFF(MINUTE, '2019-09-20 09:00:00', now());
- 計算2019-07-20 09:00:00到當前時間的秒數
select TIMESTAMPDIFF(SECOND, '2019-07-20 09:00:00', now());
- 更新某個值噹噹前時間比某個時間大於等於3天的時候
update 表名 set 字段名=value where TIMESTAMPDIFF(DAY, '2019-09-20 23:59:00', now())>=3;
2. DATEDIFF(參數1,參數2)
返回值爲相差的天數,int類型,不能定位到時分秒,因爲固定天數爲單位,所以比上面的少一個可設置的參數,且計算機制爲參數1-參數2,與上面的計算機制相反,寫反了的話會出現負數
select datediff('2019-08-22 09:00:00', '2019-08-20 07:00:00');
3.TIMDIFF(參數1,參數2)
返回值爲兩個之間相差的差值,類型與參數1和參數2的類型相同,不適宜用於計算,可用來當做結果,計算機制爲參數1-參數2
SELECT TIMEDIFF('2019-09-21 14:23:43','2019-09-19 12:56:43'); # 49:27:00
4. 其他時間函數
- now()函數返回的是當前時間的年月日時分秒
- curdate()函數返回的是年月日信息
- curtime()函數返回的是當前時間的時分秒信息