MySQL?中日期相減的完整指南(最新推薦)
MySQL 中日期相減的完整指南
在 MySQL 中,日期相減有幾種不同的方法,具體取決于你想要得到的結(jié)果類型(天數(shù)差、時(shí)間差等)。
1. 使用 DATEDIFF() 函數(shù)(返回天數(shù)差)
SELECT DATEDIFF('2023-05-15', '2023-05-10'); -- 返回 5(天數(shù)差)特點(diǎn):
- 計(jì)算兩個(gè)日期之間的天數(shù)差
- 第一個(gè)參數(shù)是結(jié)束日期,第二個(gè)是開(kāi)始日期
- 結(jié)果 = 結(jié)束日期 - 開(kāi)始日期
2. 使用 TIMESTAMPDIFF() 函數(shù)(靈活的單位)
-- 計(jì)算相差的天數(shù) SELECT TIMESTAMPDIFF(DAY, '2023-05-10', '2023-05-15'); -- 返回 5 -- 計(jì)算相差的月數(shù) SELECT TIMESTAMPDIFF(MONTH, '2023-01-15', '2023-05-20'); -- 返回 4 -- 計(jì)算相差的年份 SELECT TIMESTAMPDIFF(YEAR, '2020-01-01', '2023-01-01'); -- 返回 3
支持的單位:
MICROSECONDSECONDMINUTEHOURDAYWEEKMONTHQUARTERYEAR
3. 使用減法運(yùn)算符(返回時(shí)間間隔)
SELECT '2023-05-15 12:00:00' - '2023-05-10 10:30:00';
-- 返回 50230(格式為DDHHMM,不推薦)
-- 更安全的做法是轉(zhuǎn)為日期時(shí)間對(duì)象再減
SELECT CAST('2023-05-15 12:00:00' AS DATETIME) - CAST('2023-05-10 10:30:00' AS DATETIME);注意:直接減法在MySQL中行為不一致,不推薦使用
4. 計(jì)算時(shí)間差(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特點(diǎn):
- 專門(mén)計(jì)算時(shí)間部分差值
- 返回格式為
HH:MM:SS
5. 獲取日期部分并計(jì)算
-- 計(jì)算兩個(gè)日期之間的小時(shí)差 SELECT TIMESTAMPDIFF(HOUR, '2023-05-10 08:00', '2023-05-10 17:30'); -- 返回 9 -- 計(jì)算精確到分鐘 SELECT TIMESTAMPDIFF(MINUTE, '2023-05-10 08:00', '2023-05-10 17:30'); -- 返回 570
實(shí)際應(yīng)用示例
-- 計(jì)算訂單處理時(shí)長(zhǎng)(天) SELECT order_id, DATEDIFF(shipped_date, order_date) AS processing_days FROM orders; -- 計(jì)算員工年齡(精確到年) SELECT employee_name, TIMESTAMPDIFF(YEAR, birth_date, CURDATE()) AS age FROM employees; -- 計(jì)算服務(wù)時(shí)長(zhǎng)(精確到小時(shí)) SELECT service_id, TIMESTAMPDIFF(HOUR, start_time, end_time) AS duration_hours FROM services;
注意事項(xiàng)
- 日期格式必須正確(推薦使用’YYYY-MM-DD’格式)
- 處理NULL值時(shí)結(jié)果會(huì)為NULL
- 對(duì)于大日期范圍,
TIMESTAMPDIFF比DATEDIFF更精確 - 時(shí)區(qū)差異會(huì)影響包含時(shí)間的計(jì)算
-- 不好的寫(xiě)法(索引失效) SELECT * FROM orders WHERE DATEDIFF(CURDATE(), order_date) > 30; -- 好的寫(xiě)法(可以使用索引) SELECT * FROM orders WHERE order_date < DATE_SUB(CURDATE(), INTERVAL 30 DAY);
掌握這些日期計(jì)算方法,可以高效處理各種與時(shí)間相關(guān)的數(shù)據(jù)分析和查詢需求。
到此這篇關(guān)于MySQL 中日期相減的完整指南的文章就介紹到這了,更多相關(guān)mysql日期相減內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
mysql5.7.19 winx64安裝配置方法圖文教程(win10)
這篇文章主要為大家詳細(xì)介紹了mysql5.7.19 winx64安裝配置教程,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-07-07
MySQL 8.0.26版本升級(jí)32版本查詢數(shù)據(jù)為空的解決方案
這篇文章主要介紹了MySQL 8.0.26版本升級(jí)32版本查詢數(shù)據(jù)為空的跟蹤,本文給大家分享兩種解決方法,結(jié)合實(shí)例代碼給大家介紹的非常詳細(xì),需要的朋友參考下吧2024-03-03
MySQL中數(shù)據(jù)庫(kù)監(jiān)控核心要素與實(shí)施策略詳解
數(shù)據(jù)庫(kù)監(jiān)控是系統(tǒng)穩(wěn)定性的基石,作為核心組件,數(shù)據(jù)庫(kù)的穩(wěn)定性直接決定系統(tǒng)可用性,因此監(jiān)控至關(guān)重要,下面小編就和大家詳細(xì)講講MySQL中數(shù)據(jù)庫(kù)監(jiān)控核心要素與實(shí)施策略吧2025-11-11
CenOS6.7下mysql 8.0.22 安裝配置方法圖文教程
這篇文章主要為大家詳細(xì)介紹了CenOS6.7下mysql 8.0.22 安裝配置方法圖文教程,文中安裝步驟介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2020-11-11
解析:內(nèi)聯(lián),左外聯(lián),右外聯(lián),全連接,交叉連接的區(qū)別
本篇文章是對(duì)內(nèi)聯(lián),左外聯(lián),右外聯(lián),全連接,交叉連接的區(qū)別進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下2013-07-07
MySQL中CREATE DATABASE語(yǔ)句創(chuàng)建數(shù)據(jù)庫(kù)的示例
在MySQL中,可以使用CREATE DATABASE語(yǔ)句創(chuàng)建數(shù)據(jù)庫(kù),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2023-09-09
MySQL之修改數(shù)據(jù)表存儲(chǔ)引擎的三種方式
這篇文章主要介紹了MySQL之修改數(shù)據(jù)表存儲(chǔ)引擎的三種方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-11-11
Mysql四種分區(qū)方式以及組合分區(qū)落地實(shí)現(xiàn)詳解
對(duì)用戶來(lái)說(shuō),分區(qū)表是一個(gè)獨(dú)立的邏輯表,但是底層由多個(gè)物理子表組成,下面這篇文章主要給大家介紹了關(guān)于Mysql四種分區(qū)方式以及組合分區(qū)落地實(shí)現(xiàn)的相關(guān)資料,需要的朋友可以參考下2022-04-04

