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

SQL 字符串時間字段比較:datetime + varchar(10) 查詢晚兩小時數據

     編輯:程式設計綜合問答

場景

  • dt : datetime (如 2014-11-11 00:00:00.000)
  • time : varchar(10) (如 12:50)
  • 需查:組合時間 > 當前時間 - 2 小時

SQL Server 寫法


SELECT * FROM [table]
WHERE CAST(CONVERT(varchar(12), dt, 100) + ' ' + time AS datetime) < DATEADD(hour, -2, GETDATE())

解析

  1. CONVERT(varchar(12), dt, 100) → 'Nov 11 2014' (格式 100)。
  2. 拼接 ' ' + time → 'Nov 11 2014 12:50'。
  3. CAST(... AS datetime) 解析為完整時間點。
  4. DATEADD(hour, -2, GETDATE()) 獲取兩小時前時間。

MySQL 寫法


SELECT * FROM `table`
WHERE STR_TO_DATE(CONCAT(DATE_FORMAT(dt, '%Y-%m-%d'), ' ', time), '%Y-%m-%d %H:%i') < DATE_SUB(NOW(), INTERVAL 2 HOUR)

最佳實踐

  • 表設計階段合併為單一 datetime 列,避免運行時拼接解析,利於索引、查詢性能、時區處理。
  • 若無法改表,建立**計算列/視圖/函數索引**物化組合時間。
  • 注意 varchar(10) 可能包含秒 12:50:30,格式需兼容。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved