查詢兩個時間戳字段 time1、time2 差值小於 8 小時的記錄。
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 則為負數。WHERE TIMESTAMPDIFF(SECOND, `time1`, `time2`) <= 28800 -- 8*3600
TIMESTAMPDIFF 自動處理日曆邊界,優於手動 UNIX_TIMESTAMP 相減。diff_hours INT AS (TIMESTAMPDIFF(HOUR, time1, time2)) STORED 並建立索引。MySQL 5.0+ 全支持。MariaDB、Percona Server 行為一致。SQL Server 對應 DATEDIFF,Oracle 用 (time2 - time1) * 24。