課程 26:SQL 中的時間與日期處理
- `DATE`, `NOW()`, `INTERVAL` 等用法
理論
在資料庫中處理時間和日期資料是非常常見的需求,例如記錄訂單時間、用戶註冊日期、計算年齡或統計某個時間範圍內的數據。SQL 提供了多種資料類型和函數來有效地管理和操作日期與時間資訊。
實例
以下是一些處理日期時間資料的簡單實例:
-- 獲取當前日期和時間\nSELECT NOW();\n\n-- 獲取當前日期\nSELECT CURDATE();\n\n-- 獲取當前時間\nSELECT CURTIME();\n\n-- 計算一個日期七天後的日期\nSELECT DATE_ADD('2023-10-26', INTERVAL 7 DAY);\n\n-- 計算兩個日期之間的日數差\nSELECT DATEDIFF('2023-11-05', '2023-10-26');\n\n-- 格式化日期\nSELECT DATE_FORMAT(NOW(), '%Y-%m-%d %H:%i:%s');
語法
常用的日期時間資料類型包括:
DATE
: 只儲存日期 (YYYY-MM-DD)。TIME
: 只儲存時間 (HH:MM:SS)。DATETIME
: 儲存日期和時間 (YYYY-MM-DD HH:MM:SS)。TIMESTAMP
: 儲存日期和時間,通常用於記錄記錄的創建或修改時間。
常用的日期時間函數:
NOW()
: 返回當前日期和時間。CURDATE()
: 返回當前日期。CURTIME()
: 返回當前時間。DATE_ADD(date, INTERVAL value unit)
: 向日期添加一個時間間隔。DATE_SUB(date, INTERVAL value unit)
: 從日期減去一個時間間隔。DATEDIFF(date1, date2)
: 返回兩個日期之間的日數差。DATE_FORMAT(date, format)
: 根據指定的格式格式化日期。INTERVAL value unit
: 定義一個時間間隔,例如INTERVAL 1 DAY
,INTERVAL 1 HOUR
。
圖解
許多日期時間函數接受日期作為輸入,並返回一個新的日期、時間或一個數字(如日數差)。
[這裡可以放置一個簡單的流程圖,表示日期函數的輸入和輸出]
常見問題
- 時區問題: 不同的資料庫系統和設定可能會影響日期時間函數的結果,特別是在處理跨時區資料時。
- 日期格式: 在插入或比較日期時,確保使用的日期格式與資料庫期望的格式一致。
- 閏年: 日期計算函數通常會正確處理閏年。
小練習
嘗試執行以下 SQL 語句,並觀察結果:
-- 找出當前時間一個小時後的精確時間\n-- 計算你出生日期到現在的總日數 (假設你的出生日期是 'YYYY-MM-DD')\n-- 將當前日期格式化為 'MM/DD/YYYY'
互動式 SQL 練習:時間與日期處理
你可以在這裡輸入並模擬執行處理時間和日期的 SQL 語句。例如:SELECT NOW();
或 SELECT DATE_ADD('2023-10-26', INTERVAL 1 MONTH);