MySQL?中日期相減的完整指南(最新推薦)
MySQL 中日期相減的完整指南
在 MySQL 中,日期相減有幾種不同的方法,具體取決于你想要得到的結(jié)果類型(天數(shù)差、時間差等)。
1. 使用 DATEDIFF() 函數(shù)(返回天數(shù)差)
SELECT DATEDIFF('2023-05-15', '2023-05-10'); -- 返回 5(天數(shù)差)
特點:
- 計算兩個日期之間的天數(shù)差
- 第一個參數(shù)是結(jié)束日期,第二個是開始日期
- 結(jié)果 = 結(jié)束日期 - 開始日期
2. 使用 TIMESTAMPDIFF() 函數(shù)(靈活的單位)
-- 計算相差的天數(shù) SELECT TIMESTAMPDIFF(DAY, '2023-05-10', '2023-05-15'); -- 返回 5 -- 計算相差的月數(shù) SELECT TIMESTAMPDIFF(MONTH, '2023-01-15', '2023-05-20'); -- 返回 4 -- 計算相差的年份 SELECT TIMESTAMPDIFF(YEAR, '2020-01-01', '2023-01-01'); -- 返回 3
支持的單位:
MICROSECOND
SECOND
MINUTE
HOUR
DAY
WEEK
MONTH
QUARTER
YEAR
3. 使用減法運算符(返回時間間隔)
SELECT '2023-05-15 12:00:00' - '2023-05-10 10:30:00'; -- 返回 50230(格式為DDHHMM,不推薦) -- 更安全的做法是轉(zhuǎn)為日期時間對象再減 SELECT CAST('2023-05-15 12:00:00' AS DATETIME) - CAST('2023-05-10 10:30:00' AS DATETIME);
注意:直接減法在MySQL中行為不一致,不推薦使用
4. 計算時間差(TIMEDIFF)
SELECT TIMEDIFF('12:00:00', '10:30:00'); -- 返回 01:30:00 SELECT TIMEDIFF('2023-05-15 12:00:00', '2023-05-15 10:30:00'); -- 返回 01:30:00
特點:
- 專門計算時間部分差值
- 返回格式為
HH:MM:SS
5. 獲取日期部分并計算
-- 計算兩個日期之間的小時差 SELECT TIMESTAMPDIFF(HOUR, '2023-05-10 08:00', '2023-05-10 17:30'); -- 返回 9 -- 計算精確到分鐘 SELECT TIMESTAMPDIFF(MINUTE, '2023-05-10 08:00', '2023-05-10 17:30'); -- 返回 570
實際應(yīng)用示例
-- 計算訂單處理時長(天) SELECT order_id, DATEDIFF(shipped_date, order_date) AS processing_days FROM orders; -- 計算員工年齡(精確到年) SELECT employee_name, TIMESTAMPDIFF(YEAR, birth_date, CURDATE()) AS age FROM employees; -- 計算服務(wù)時長(精確到小時) SELECT service_id, TIMESTAMPDIFF(HOUR, start_time, end_time) AS duration_hours FROM services;
注意事項
- 日期格式必須正確(推薦使用’YYYY-MM-DD’格式)
- 處理NULL值時結(jié)果會為NULL
- 對于大日期范圍,
TIMESTAMPDIFF
比DATEDIFF
更精確 - 時區(qū)差異會影響包含時間的計算
-- 不好的寫法(索引失效) SELECT * FROM orders WHERE DATEDIFF(CURDATE(), order_date) > 30; -- 好的寫法(可以使用索引) SELECT * FROM orders WHERE order_date < DATE_SUB(CURDATE(), INTERVAL 30 DAY);
掌握這些日期計算方法,可以高效處理各種與時間相關(guān)的數(shù)據(jù)分析和查詢需求。
到此這篇關(guān)于MySQL 中日期相減的完整指南的文章就介紹到這了,更多相關(guān)mysql日期相減內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
windows?64位下mysql8.0.25安裝配置教程(最詳細!)
之前一直在用 5.7 版本,竟然一下子跳到 8.0了,下面這篇文章主要給大家介紹了關(guān)于在windows?64位下mysql8.0.25安裝配置教程,文章通過圖文介紹的非常詳細,需要的朋友可以參考下2022-03-03

mysql觸發(fā)器之創(chuàng)建多個觸發(fā)器操作實例分析

centos7.2離線安裝mysql5.7.18.tar.gz