首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> MySQL 資料庫 >> SQL 基礎

SQL 日期函數完整指南:MySQL 與 SQL Server 核心函數、資料類型與查詢陷阱

     編輯:SQL 基礎

SQL 日期處理函數完整指南


日期處理的核心挑戰

日期查詢最大的難點在於 格式匹配。純日期比較簡單,但涉及時間元件時複雜度大幅上升。


MySQL 核心日期函數

函數描述
NOW()目前日期時間
CURDATE()目前日期
CURTIME()目前時間
DATE()擷取日期/時間的日期部分
EXTRACT()取得日期/時間的單一部分 (年/月/日等)
DATE_ADD()日期加上指定間隔
DATE_SUB()日期減去指定間隔
DATEDIFF()兩日期相差天數
DATE_FORMAT()格式化日期/時間顯示

SQL Server 核心日期函數

函數描述
GETDATE()目前日期時間
DATEPART()取得日期/時間單一部分
DATEADD()日期加減指定間隔
DATEDIFF()兩日期時間差異
CONVERT()格式化日期/時間顯示

日期資料類型對照

MySQL

  • DATE - YYYY-MM-DD
  • DATETIME - YYYY-MM-DD HH:MM:SS
  • TIMESTAMP - YYYY-MM-DD HH:MM:SS
  • YEAR - YYYY 或 YY

SQL Server

  • DATE - YYYY-MM-DD
  • DATETIME - YYYY-MM-DD HH:MM:SS
  • SMALLDATETIME - YYYY-MM-DD HH:MM:SS
  • TIMESTAMP - 唯一數字 (非真實時間)

註:建表時需為欄位選擇正確資料類型。


日期查詢常見陷阱:時間元件導致比對失敗

情境:Orders 表含時間元件

OrderIdProductNameOrderDate
1Geitost2008-11-11 13:23:44
2Camembert Pierrot2008-11-09 15:45:21
3Mozzarella di Giovanni2008-11-11 11:12:01
4Mascarpone Fabioli2008-10-29 14:56:59

查詢 WHERE OrderDate = '2008-11-11' 將 無任何結果,因為資料含時間但查詢條件只有日期。

最佳實務: 若不需時間精度,請勿在日期欄位儲存時間元件,保持查詢簡單易維護。


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