| 需求 | 函數/語法 | 範例輸出 | 說明 |
|---|---|---|---|
| 目前日期時間 | GETDATE() | 2024-03-15 14:30:45.123 | 精度至毫秒 (約 3.33ms) |
| 標準完整格式 (yyyy-mm-dd hh:mi:ss) | CONVERT(VARCHAR, GETDATE(), 20) 或 CONVERT(VARCHAR(20), GETDATE(), 120) | 2024-03-15 14:30:45 | 樣式 20/120 皆為 ODBC 標準,長度 19,建議用 20 避免截斷 |
| 僅日期 (yyyy-mm-dd) | CONVERT(VARCHAR, GETDATE(), 23) 或 CONVERT(VARCHAR(10), GETDATE(), 120) | 2024-03-15 | 樣式 23 為 ISO 8601 短日期 |
| 僅時間 (hh:mi:ss) | CONVERT(VARCHAR, GETDATE(), 108) | 14:30:45 | |
| 中文常用格式 (yyyy年mm月dd日) | CONVERT(VARCHAR, GETDATE(), 111) + REPLACE | 2024年03月15日 | 111 為 yyyy/mm/dd,再 REPLACE('/', '年') 等 |
-- 無分隔符
112 -> 20240315
-- 常見分隔
101 -> 03/15/2024 (mm/dd/yyyy)
102 -> 2024.03.15 (yyyy.mm.dd)
103 -> 15/03/2024 (dd/mm/yyyy)
104 -> 15.03.2024 (dd.mm.yyyy)
105 -> 15-03-2024 (dd-mm-yyyy)
111 -> 2024/03/15 (yyyy/mm/dd)
-- 含時間
20/120 -> 2024-03-15 14:30:45
121 -> 2024-03-15 14:30:45.123 (含毫秒,ISO8601)
-- 當天 00:00:00
DATEADD(dd, DATEDIFF(dd, 0, GETDATE()), 0)
-- 本月第一天
DATEADD(mm, DATEDIFF(mm, 0, GETDATE()), 0)
-- 本月最後一天 23:59:59.997
DATEADD(ms, -3, DATEADD(mm, DATEDIFF(mm, 0, GETDATE()) + 1, 0))
CONVERT 比 FORMAT (SQL 2012+) 快數倍,高頻呼叫 (如報表逐列) 應優先用 CONVERT。WHERE CreatedAt >= '2024-03-01' AND CreatedAt < '2024-04-01'。SELECT FORMAT(GETDATE(), 'yyyy-MM-dd HH:mm:ss', 'zh-TW'); -- 2024-03-15 14:30:45
SELECT FORMAT(GETDATE(), 'yyyy年MM月dd日 dddd', 'zh-TW'); -- 2024年03月15日 星期五
支援 .NET 自訂格式字串與文化特性,適合表現層輸出,不建議用於大量資料處理。