日期時間處理是資料庫開發中最常見的需求之一。SQL Server 提供了豐富的內建函數,支援日期運算、格式化、元件提取等操作。
| 函數名稱 | 語法 | 功能說明 |
|---|---|---|
| GETDATE | GETDATE() | 返回系統當前日期和時間 (datetime 型別) |
| DATEADD | DATEADD(datepart, number, date) | 在指定日期上加減時間間隔,返回 datetime 或 smalldatetime 型別 |
| DATEDIFF | DATEDIFF(datepart, date1, date2) | 計算兩個日期之間的時間間隔,單位由 datepart 指定 |
| DATENAME | DATENAME(datepart, date) | 返回日期指定部分對應的字串值(如月份名稱、星期名稱) |
| DATEPART | DATEPART(datepart, date) | 返回日期指定部分對應的整數值 |
year, yy, yyyy — 年quarter, qq, q — 季month, mm, m — 月dayofyear, dy, y — 年內天數day, dd, d — 日week, wk, ww — 週weekday, dw — 星期hour, hh — 時minute, mi, n — 分second, ss, s — 秒millisecond, ms — 毫秒-- 當前日期加 30 天 SELECT DATEADD(day, 30, GETDATE()) -- 當前日期減 6 個月 SELECT DATEADD(month, -6, GETDATE())
-- 計算兩日期相差天數 SELECT DATEDIFF(day, '2024-01-01', GETDATE()) -- 計算年齡(以年為單位) SELECT DATEDIFF(year, '1990-05-15', GETDATE())
-- 取得月份名稱(字串) SELECT DATENAME(month, GETDATE()) -- 如:January -- 取得月份編號(整數) SELECT DATEPART(month, GETDATE()) -- 如:1
DATENAME 返回字串格式(如 "January"、"Monday"),適合顯示給使用者;DATEPART 返回整數(如 1、2),適合邏輯判斷與運算。