CONVERT 是 SQL Server 將日期/時間轉為字串最常用的函數,支援超過 30 種 style 代碼。本文整理完整對照表並提供即用範例,方便開發隨時查閱。
| 無世紀 (yy) | 有世紀 (yyyy) | 標準/輸出範例 | 備註 |
|---|---|---|---|
| 0 / 100 | 0 / 100 | mon dd yyyy hh:miAM (PM) | 預設 |
| 1 | 101 | mm/dd/yyyy | 美國 |
| 2 | 102 | yyyy.mm.dd | ANSI |
| 3 | 103 | dd/mm/yyyy | 英國/法國 |
| 4 | 104 | dd.mm.yyyy | 德國 |
| 5 | 105 | dd-mm-yyyy | 義大利 |
| 6 | 106 | dd mon yyyy | |
| 7 | 107 | mon dd, yyyy | |
| 8 | 108 | hh:mm:ss | 僅時間 |
| 9 / 109 | 9 / 109 | mon dd yyyy hh:mi:ss:mmmAM (PM) | 預設+毫秒 |
| 10 | 110 | mm-dd-yyyy | 美國 |
| 11 | 111 | yyyy/mm/dd | 日本 |
| 12 | 112 | yyyymmdd | ISO (無分隔) |
| 13 / 113 | 13 / 113 | dd mon yyyy hh:mm:ss:mmm (24h) | 歐洲預設+毫秒 |
| 14 | 114 | hh:mi:ss:mmm (24h) | 僅時間+毫秒 |
| 20 / 120 | 20 / 120 | yyyy-mm-dd hh:mm:ss[.fff] | ODBC 標準 |
| 21 / 121 | 21 / 121 | yyyy-mm-dd hh:mm:ss[.fff] | ODBC + 毫秒 |
| - | 126 | yyyy-mm-ddThh:mm:ss:mmm | ISO8601 (XML 專用) |
| 130 | 130 | dd mon yyyy hh:mi:ss:mmmAM | 科威特 (Hijri) |
| 131 | 131 | dd/mm/yyyy hh:mi:ss:mmmAM | 科威特 |
注意:style 值加 100 即為含世紀 (yyyy) 版本;預設值 (0,9,13,20,21) 均回傳 4 位數年份。
-- 完整日期時間 (可排序、無歧義)
SELECT CONVERT(varchar, GETDATE(), 120); -- 2024-01-15 14:30:45
SELECT CONVERT(varchar, GETDATE(), 121); -- 2024-01-15 14:30:45.123
-- 純日期 (常用於 GROUP BY、檔名、ETL 批次代碼)
SELECT CONVERT(varchar(10), GETDATE(), 112); -- 20240115
SELECT CONVERT(varchar(10), GETDATE(), 111); -- 2024/01/15
SELECT CONVERT(varchar(10), GETDATE(), 102); -- 2024.01.15
-- 常見地區格式
SELECT CONVERT(varchar(10), GETDATE(), 101); -- 01/15/2024 (美)
SELECT CONVERT(varchar(10), GETDATE(), 103); -- 15/01/2024 (英/法)
SELECT CONVERT(varchar(10), GETDATE(), 104); -- 15.01.2024 (德)
SELECT CONVERT(varchar(10), GETDATE(), 105); -- 15-01-2024 (義)
-- 僅時間
SELECT CONVERT(varchar(8), GETDATE(), 108); -- 14:30:45
SELECT CONVERT(varchar(12), GETDATE(), 114); -- 14:30:45.123
-- 產生無分隔時間戳 (檔名、批次 ID)
SELECT REPLACE(REPLACE(REPLACE(CONVERT(varchar, GETDATE(), 120), '-', ''), ' ', ''), ':', '');
-- 20240115143045
sp_configure 'two digit year cutoff' 修改,但強烈建議一律使用 4 位數年份 避免歧義smalldatetime 轉字串時,秒/毫秒位會補 0varchar(n) 長度截斷不需要的日期部分 (如 varchar(7) 取年月)建議將本表加入開發團隊 Wiki 或列印貼在工位,查詢格式代碼不再需要 Google。