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:如果你要保持你的查詢簡單,易於維護,不要讓你的日期時間部分!