最新的Web開發教程
 

SQL日期函數


SQL日期

使用日期時,最困難的部分是要確保你正在試圖插入日期的格式,在數據庫中日期列的格式相匹配。


MySQL的日期函數

下表列出了在MySQL中最重要的內建日期函數:

功能 描述
NOW() 返回當前的日期和時間
CURDATE() 返回當前日期
CURTIME() 返回當前時間
DATE() 提取日期或日期/時間表達式的日期部分
EXTRACT() 返回的一個日期/時間的單個部分
DATE_ADD() 添加一個指定的時間間隔為日期
DATE_SUB() 從日期減去指定的時間間隔
DATEDIFF() 返回天兩個日期之間的數
DATE_FORMAT() 顯示日期/不同格式的時間數據

SQL Server的日期函數

下表列出了在SQL Server的最重要的內置的日期的功能:

功能 描述
GETDATE() 返回當前的日期和時間
DATEPART() 返回的一個日期/時間的單個部分
DATEADD() 添加或從日期減去指定的時間間隔
DATEDIFF() 返回兩個日期之間的時間
CONVERT() 顯示日期/不同格式的時間數據

SQL日期數據類型

MySQL具有以下數據類型用於存儲日期或在數據庫中的日期/時間值:

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

SQL Server具有以下數據類型用於存儲日期或在數據庫中的日期/時間值:

  • DATE - 格式YYYY-MM-DD
  • DATETIME - 格式:YYYY-MM-DD HH:MI:SS
  • SMALLDATETIME - 格式:YYYY-MM-DD HH:MI:SS
  • TIMESTAMP - 格式:一個唯一的編號

Note:日期類型為列選擇當您在數據庫中創建新表!

有關可用的所有數據類型的概述,請訪問我們完整的數據類型參考


SQL使用日期

您可以輕鬆地比較兩個日期,如果有不涉及時間部分!

假設我們有以下的"Orders"表:

OrderId ProductName OrderDate
1 Geitost 2008-11-11
2 Camembert Pierrot 2008-11-09
3 Mozzarella di Giovanni 2008-11-11
4 Mascarpone Fabioli 2008-10-29

現在,我們希望與選擇的記錄OrderDate"2008-11-11"從上面的表中。

我們用下面的SELECT語句:

SELECT * FROM Orders WHERE OrderDate='2008-11-11'

結果集將是這樣的:

OrderId ProductName OrderDate
1 Geitost 2008-11-11
3 Mozzarella di Giovanni 2008-11-11

現在,假設"Orders"表如下所示(請注意在時間組件"OrderDate"欄):

OrderId ProductName OrderDate
1 Geitost 2008-11-11 13:23:44
2 卡門培爾皮埃羅 2008-11-09十五點45分21秒
3 莫扎里拉吉奧瓦尼 2008-11-11 11點12分01秒
4 馬斯卡Fabioli 2008-10-29 14時56分59秒

如果我們用同樣的SELECT語句如上:

SELECT * FROM Orders WHERE OrderDate='2008-11-11'

我們會得到任何結果! 這是因為在查詢正在僅與沒有時間部分日期。

Tip:如果你要保持你的查詢簡單,易於維護,不要讓你的日期時間部分!