首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

MySQL 兩個時間戳字段差值查詢:TIMESTAMPDIFF 函數用法

     編輯:程式設計綜合問答

需求

查詢兩個時間戳字段 time1、time2 差值小於 8 小時的記錄。

標準 SQL


SELECT * FROM `table`
WHERE TIMESTAMPDIFF(HOUR, `time1`, `time2`) <= 8;

函數解析

  • TIMESTAMPDIFF(unit, datetime_expr1, datetime_expr2):返回 datetime_expr2 - datetime_expr1 的整數差值,單位由 unit 指定(MICROSECOND, SECOND, MINUTE, HOUR, DAY, WEEK, MONTH, QUARTER, YEAR)。
  • 結果為有符號整數,若 expr2 < expr1 則為負數。

進階場景

  1. 精確到秒:
    WHERE TIMESTAMPDIFF(SECOND, `time1`, `time2`) <= 28800  -- 8*3600
      
  2. 跨天/跨月計算:TIMESTAMPDIFF 自動處理日曆邊界,優於手動 UNIX_TIMESTAMP 相減。
  3. 索引優化:若頻繁按時間差查詢,考慮增加生成列 diff_hours INT AS (TIMESTAMPDIFF(HOUR, time1, time2)) STORED 並建立索引。

兼容性提示

MySQL 5.0+ 全支持。MariaDB、Percona Server 行為一致。SQL Server 對應 DATEDIFF,Oracle 用 (time2 - time1) * 24。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved