MySQL 中日期相減的完整指南

MySQL 中日期相減的完整指南

在 MySQL 中,日期相減有幾種不同的方法,具體取決于你想要得到的結果類型(天數差、時間差等)。

1. 使用 DATEDIFF() 函數(返回天數差)

SELECT DATEDIFF('2023-05-15', '2023-05-10'); -- 返回 5(天數差)

特點:

  • 計算兩個日期之間的天數差
  • 第一個參數是結束日期,第二個是開始日期
  • 結果 = 結束日期 - 開始日期

2. 使用 TIMESTAMPDIFF() 函數(靈活的單位)

-- 計算相差的天數
SELECT TIMESTAMPDIFF(DAY, '2023-05-10', '2023-05-15'); -- 返回 5-- 計算相差的月數
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,不推薦)-- 更安全的做法是轉為日期時間對象再減
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

實際應用示例

-- 計算訂單處理時長(天)
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;-- 計算服務時長(精確到小時)
SELECT service_id, TIMESTAMPDIFF(HOUR, start_time, end_time) AS duration_hours
FROM services;

注意事項

  1. 日期格式必須正確(推薦使用’YYYY-MM-DD’格式)
  2. 處理NULL值時結果會為NULL
  3. 對于大日期范圍,TIMESTAMPDIFFDATEDIFF更精確
  4. 時區差異會影響包含時間的計算

性能建議

  1. 對日期列建立索引可以提高計算效率
  2. 在WHERE條件中使用日期函數會導致索引失效,如:
    -- 不好的寫法(索引失效)
    SELECT * FROM orders WHERE DATEDIFF(CURDATE(), order_date) > 30;-- 好的寫法(可以使用索引)
    SELECT * FROM orders WHERE order_date < DATE_SUB(CURDATE(), INTERVAL 30 DAY);
    

掌握這些日期計算方法,可以高效處理各種與時間相關的數據分析和查詢需求。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/81536.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/81536.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/81536.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

傳奇各版本迭代時間及內容變化,屠龍/嗜魂法杖/逍遙扇第一次出現的時間和版本

?【早期經典版本】 1.10 三英雄傳說&#xff1a;2001 年 9 月 28 日熱血傳奇正式開啟公測&#xff0c;這是傳奇的第一個版本。游戲中白天與黑夜和現實同步&#xff0c;升級慢&#xff0c;怪物爆率低&#xff0c;玩家需要靠撿垃圾賣金幣維持游戲開銷&#xff0c;遇到高級別法師…

重塑數學邊界:人工智能如何引領數學研究的新紀元

目錄 一、人工智能如何重新定義數學研究的邊界 &#xff08;一&#xff09;數學與AI的關系&#xff1a;從基礎理論到創新思維的回饋 &#xff08;二&#xff09;AI的創造力&#xff1a;突破傳統推理的局限 &#xff08;三&#xff09;AI對數學研究的潛在貢獻&#xff1a;創…

IP偽裝、代理池與分布式爬蟲

一、動態代理IP應用&#xff1a;代理池的獲取、選擇與使用 代理池技術的核心是通過動態切換IP地址&#xff0c;讓爬蟲看起來像不同用戶在訪問網站&#xff0c;從而規避封禁。 &#xff08;一&#xff09;代理池的獲取途徑 1. 免費代理&#xff1a;低成本但高風險 免費代理可…

自然語言處理實戰:用CRF打造高精度命名實體識別系統

## 一、從標簽游戲到智能系統:命名實體識別的前世今生 在信息爆炸的互聯網時代,我們每天面對的海量文本中隱藏著無數有價值的信息。想象一下,當你在瀏覽新聞時,系統能自動標紅所有人名、地點和機構名稱——這就是命名實體識別(NER)技術的魔力。從早期的規則匹配到如今的…

Space Engineers 太空工程師 [DLC 解鎖] [Steam] [Windows]

Space Engineers 太空工程師 [DLC 解鎖] [Steam] [Windows] 需要有游戲正版基礎本體&#xff0c;安裝路徑不能帶有中文&#xff0c;或其它非常規拉丁字符&#xff1b; DLC 版本 至最新全部 DLC 后續可能無法及時更新文章&#xff0c;具體最新版本見下載文件說明 DLC 解鎖列表&…

JVM——JVM 是如何執行方法調用的?

JVM 是如何執行方法調用的&#xff1f; 在 Java 世界的底層運作中&#xff0c;方法調用機制是理解 Java 虛擬機&#xff08;JVM&#xff09;行為的關鍵之一。JVM 作為 Java 程序運行的核心&#xff0c;承擔著執行字節碼、管理內存、調度線程等多項職責。而方法調用作為程序邏輯…

MySQL 數據類型詳解:字符串、數字、日期

MySQL 數據類型詳解&#xff1a;字符串、數字、日期 在 MySQL 中&#xff0c;選擇合適的數據類型對于數據庫的存儲效率和查詢性能至關重要。MySQL 提供了**字符串&#xff08;String&#xff09;、數字&#xff08;Numeric&#xff09;和日期&#xff08;Date & Time&…

題解:P2485 [SDOI2011] 計算器

### 思路 本題是一個比較模板化的題目。 #### 一操作 考慮使用快速冪。 快速冪&#xff0c;只需要把 $k$ 變成二進制即可實現 $\Theta(\log k)$ 的時間復雜度。 實現方法&#xff1a; cpp long long qmi(long long a,long long k,long long p){ long long res 1; …

重新構想E-E-A-T:提升銷售與搜索可見性的SEO策略

在2025年的數字營銷環境中&#xff0c;谷歌的E-E-A-T&#xff08;經驗、專業性、權威性、可信度&#xff09;已成為SEO和內容營銷的核心支柱。傳統的E-E-A-T優化方法通常聚焦于展示作者資質或獲取反向鏈接&#xff0c;但這些策略可能不足以應對AI驅動的搜索和日益挑剔的用戶需求…

JVM 一文詳解

目錄 JVM 簡介 JVM 中的內存區域劃分 1. 堆&#xff08;一個進程只有一份 ------ 線程共享&#xff09; 2. 棧&#xff08;一個進程可以有 N 份 ------ 線程私有&#xff09; Java 虛擬機棧&#xff1a; 本機方法棧&#xff1a; 3. 程序計數器&#xff08;一個線程可以…

小程序與快應用:中國移動互聯網的漸進式革命——卓伊凡的技術演進觀

小程序與快應用&#xff1a;中國移動互聯網的漸進式革命——卓伊凡的技術演進觀 在知乎看到很多&#xff1a;“懂王”發布的要把內行笑瘋了的評論&#xff0c;卓伊凡必須懟一下&#xff0c;真印證那句話&#xff0c;無知者無畏 一、Web與小程序的技術本質差異 1.1 瀏覽器渲染…

[SC]SystemC在GPU/CPU SoC驗證中的應用案例

SystemC在GPU/CPU SoC驗證中的應用案例 摘要:SystemC 是一種基于 C++ 的系統級建模語言,廣泛用于 SoC (System on Chip) 設計的建模和驗證,尤其在 GPU SoC 驗證中,SystemC 可用于模擬硬件模塊、系統行為和性能評估。SystemC 的主要優勢在于支持系統級抽象建模、時序…

Java 網絡安全新技術:構建面向未來的防御體系

一、Java 安全架構的演進與挑戰 1.1 傳統安全模型的局限性 Java 平臺自 1995 年誕生以來&#xff0c;安全機制經歷了從安全管理器&#xff08;Security Manager&#xff09;到 Java 平臺模塊系統&#xff08;JPMS&#xff09;的演進。早期的安全管理器通過沙箱模型限制不可信…

sonar-scanner在掃描JAVA項目時為什么需要感知.class文件

1 概述 SonarQube是一個靜態代碼分析工具&#xff0c;主要用于檢查源代碼的質量&#xff0c;包括代碼重復、潛在漏洞、代碼風格問題等。而SonarScanner是SonarQube的客戶端工具&#xff0c;負責將代碼進行形態分析&#xff0c;并將結果發送到SonarQube服務器。所以&#xff0c…

媒資管理之視頻管理

一:業務概述: 媒資管理這個模塊是我負責開發的,主要的管理對象是視頻,圖片,文檔等 包括文件的上傳,視頻的處理,文件的刪除 (在媒資管理界面,有個上傳視頻的按鈕,視頻是在媒資這上傳的,課程圖片是在內容管理) 上傳的圖片和視頻,會單獨存儲到搭建的分布式文件系…

Maven 實現多模塊項目依賴管理

&#x1f9d1; 博主簡介&#xff1a;CSDN博客專家&#xff0c;歷代文學網&#xff08;PC端可以訪問&#xff1a;https://literature.sinhy.com/#/?__c1000&#xff0c;移動端可微信小程序搜索“歷代文學”&#xff09;總架構師&#xff0c;15年工作經驗&#xff0c;精通Java編…

nuxt項目中引入并配置 iview

安裝iview npm install iview --save注&#xff1a;想要加入其它的配置&#xff0c;可以在 nuxt.config.js 的 plugins 配置項中加入&#xff0c;同時在 plugins 文件夾下加入引入邏輯。 在nuxt.config.js文件中寫&#xff1a; {src: ~plugins/iview, ssr: true}同時新建 plugi…

BG開發者日志505:項目總體情況

1、從2024年12月中旬啟動&#xff0c;到4月底gameplay部分開發完畢&#xff0c;已經四個半月過去了。 其中大部分內容是3、4兩個月中完成的&#xff0c;量產階段。 預計6月初參加新品節&#xff0c;6月中旬發售&#xff08;比原計劃7月中旬提前一個月&#xff09;。 --------…

C++ *stream | istream / ostream / iostream 詳解

注&#xff1a;本文為 “C *stream” 相關文章合輯。 英文引文&#xff0c;機翻未校。 中文引文&#xff0c;略作重排&#xff0c;未整理去重。 如有內容異常&#xff0c;請看原文。 Understanding the Utility of Iostreams in C 理解 C 中 iostream 的用途 By Manoj Debnat…

Dagster中的Ops與Assets:數據管道構建的兩種選擇

Dagster是一個強大的數據編排平臺&#xff0c;它提供了多種工具來幫助數據工程師構建可靠的數據管道。在Dagster中&#xff0c;Ops和Assets是兩種核心概念&#xff0c;用于定義數據處理邏輯。本文將全面介紹Ops的概念、特性及其使用方法&#xff0c;特別補充了Op上下文和Op工廠…