SQL Date 函式
阿新 • • 發佈:2020-08-13
SQL 日期
當我們處理日期時,最難的任務恐怕是確保所插入的日期的格式,與資料庫中日期列的格式相匹配。
只要資料包含的只是日期部分,執行查詢就不會出問題。但是,如果涉及時間,情況就有點複雜了。
在討論日期查詢的複雜性之前,我們先來看看最重要的內建日期處理函式。
MySQL Date 函式
下面的表格列出了 MySQL 中最重要的內建日期函式:
函式 | 描述 |
---|---|
NOW() | 返回當前的日期和時間 |
CURDATE() | 返回當前的日期 |
CURTIME() | 返回當前的時間 |
DATE() | 提取日期或日期/時間表達式的日期部分 |
EXTRACT() | 返回日期/時間按的單獨部分 |
DATE_ADD() |
給日期新增指定的時間間隔 |
DATE_SUB() | 從日期減去指定的時間間隔 |
DATEDIFF() | 返回兩個日期之間的天數 |
DATE_FORMAT() | 用不同的格式顯示日期/時間 |
SQL Server Date 函式
下面的表格列出了 SQL Server 中最重要的內建日期函式:
函式 | 描述 |
---|---|
GETDATE() | 返回當前日期和時間 |
DATEPART() | 返回日期/時間的單獨部分 |
DATEADD() | 在日期中新增或減去指定的時間間隔 |
DATEDIFF() | 返回兩個日期之間的時間 |
CONVERT() | 用不同的格式顯示日期/時間 |
SQL Date 資料型別
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 - 格式: 唯一的數字
SQL 日期處理
如果不涉及時間部分,那麼我們可以輕鬆地比較兩個日期!
假設我們有下面這個 "Orders" 表:
OrderId | ProductName | OrderDate |
---|---|---|
1 | computer | 2008-12-26 |
2 | printer | 2008-12-26 |
3 | electrograph | 2008-11-12 |
4 | telephone | 2008-10-19 |
現在,我們希望從上表中選取 OrderDate 為 "2008-12-26" 的記錄。
我們使用如下 SELECT 語句:
SELECT * FROM Orders WHERE OrderDate='2008-12-26'
結果集:
OrderId | ProductName | OrderDate |
---|---|---|
1 | computer | 2008-12-26 |
3 | electrograph | 2008-12-26 |
現在假設 "Orders" 類似這樣(請注意 "OrderDate" 列中的時間部分):
OrderId | ProductName | OrderDate |
---|---|---|
1 | computer | 2008-12-26 16:23:55 |
2 | printer | 2008-12-26 10:45:26 |
3 | electrograph | 2008-11-12 14:12:08 |
4 | telephone | 2008-10-19 12:56:10 |
如果我們使用上面的 SELECT 語句:
SELECT * FROM Orders WHERE OrderDate='2008-12-26'
那麼我們得不到結果。這是由於該查詢不含有時間部分的日期。
提示:如果您希望使查詢簡單且更易維護,那麼請不要在日期中使用時間部分!