CONVERT ( data_type [ ( length ) ] , expression [ , style ] )
style 僅在 日期時間類型 ↔ 字串類型 轉換時生效。style,預設為 0 (mon dd yyyy hh:miAM/PM)。| 不含世紀 (yy) | 含世紀 (yyyy) | 輸出格式範例 | 說明 |
|---|---|---|---|
| - | 0 或 100 | Jan 15 2024 3:45PM | 預設 mon dd yyyy hh:miAM/PM |
| 1 | 101 | 01/15/2024 | 美式 mm/dd/yyyy |
| 2 | 102 | 2024.01.15 | yyyy.mm.dd (ANSI) |
| 3 | 103 | 15/01/2024 | 英式 dd/mm/yyyy |
| 4 | 104 | 15.01.2024 | dd.mm.yyyy |
| 5 | 105 | 15-01-2024 | dd-mm-yyyy |
| 6 | 106 | 15 Jan 2024 | dd mon yyyy |
| 7 | 107 | Jan 15, 2024 | mon dd, yyyy |
| 8 | 108 | 15:45:30 | hh:mi:ss (24h) |
| - | 9 或 109 | Jan 15 2024 3:45:30:123PM | 含毫秒 mon dd yyyy hh:mi:ss:mmmAM/PM |
| 10 | 110 | 01-15-2024 | mm-dd-yyyy |
| 11 | 111 | 2024/01/15 | yyyy/mm/dd |
| 12 | 112 | 20240115 | yyyymmdd (ISO 適合排序/檔名) |
| - | 13 或 113 | 15 Jan 2024 15:45:30:123 | 歐洲預設 dd mon yyyy hh:mi:ss:mmm (24h) |
| 14 | 114 | 15:45:30:123 | hh:mi:ss:mmm (24h) |
| - | 20 或 120 | 2024-01-15 15:45:30 | ODBC 標準 yyyy-mm-dd hh:mi:ss (24h) |
| - | 21 或 121 | 2024-01-15 15:45:30.123 | ODBC 毫秒 yyyy-mm-dd hh:mi:ss.mmm (24h) |
| - | 126 | 2024-01-15T15:45:30.123 | ISO 8601 (XML/JSON 常用) |
| - | 127 | 2024-01-15T15:45:30.123Z | ISO 8601 UTC |
| - | 130 | 15 جمادى الأولى 1445 3:45:30 PM | 回曆 (Hijri) |
| - | 131 | 15/05/1445 3:45:30 PM | 回曆 dd/mm/yyyy |
SELECT CONVERT(VARCHAR(10), GETDATE(), 120); -- 2024-01-15
SELECT CONVERT(CHAR(10), GETDATE(), 120); -- 固定長度 10
SELECT CONVERT(VARCHAR(8), GETDATE(), 108); -- 15:45:30
SELECT CONVERT(VARCHAR(8), GETDATE(), 112); -- 20240115
-- 字串 '20240115' 轉日期
SELECT CONVERT(DATETIME, '20240115', 112); -- 2024-01-15 00:00:00.000
-- 字串 '2024-01-15 15:45:30' 轉日期
SELECT CONVERT(DATETIME, '2024-01-15 15:45:30', 120);
DECLARE @raw VARCHAR(20) = '20240115.0000';
-- 步驟 1: 去除小數部份 → 整數字串
DECLARE @intStr VARCHAR(8) = CONVERT(VARCHAR(8), CAST(@raw AS INT));
-- 步驟 2: 轉日期
SELECT CONVERT(DATETIME, @intStr, 112); -- 2024-01-15 00:00:00.000
SELECT FORMAT(GETDATE(), 'yyyy-MM-dd HH:mm:ss', 'zh-TW'); -- 2024-01-15 15:45:30
SELECT FORMAT(GETDATE(), 'D', 'zh-TW'); -- 2024年1月15日
FORMAT 依賴 .NET CLR,效能較 CONVERT 低,適合顯示層、報表;高頻 ETL 建議仍用 CONVERT。
style 參數不支援變數,需為常數;動態格式需動態 SQL。VARCHAR 長度過短會截斷,建議用 VARCHAR(23) 以上 (含毫秒) 或 CHAR(10) (純日期)。SET LANGUAGE) 會影響月份名稱輸出 (mon),跨語言環境建議用數字格式 (112, 120, 121)。