核心語法
CONVERT(data_type(length), expression, style)
- data_type:目標類型,日期格式化常用
VARCHAR/NVARCHAR
- length:足夠容納輸出長度(如 10 容納 yyyy-MM-dd,19 容納 yyyy-MM-dd HH:mm:ss)
- style:預定義格式代碼,決定輸出樣式
常用樣式代碼速查表
| Style | 輸出示例 | 說明 | 標準 |
| 100 | Mon DD YYYY HH:MIAM | 默認含毫秒 | |
| 101 | MM/DD/YYYY | 美國 | |
| 102 | YYYY.MM.DD | ANSI | |
| 103 | DD/MM/YYYY | 英國/法國 | |
| 104 | DD.MM.YYYY | 德國 | |
| 105 | DD-MM-YYYY | 意大利 | |
| 106 | DD MON YYYY | | |
| 107 | Mon DD, YYYY | | |
| 108 | HH:MI:SS | 僅時間 | |
| 110 | MM-DD-YYYY | 美國 | |
| 111 | YYYY/MM/DD | 日本 | |
| 112 | YYYYMMDD | ISO 無分隔 | |
| 120 | YYYY-MM-DD HH:MI:SS(24h) | ODBC 標準 | ✓ |
| 121 | YYYY-MM-DD HH:MI:SS.mmm | ODBC 毫秒 | ✓ |
| 126 | YYYY-MM-DDTHH:MI:SS.mmm | ISO8601 | ✓ |
| 127 | YYYY-MM-DDTHH:MI:SS.mmmZ | ISO8601 UTC | ✓ |
實戰常用模式
-- 僅日期
SELECT CONVERT(VARCHAR(10), GETDATE(), 120); -- 2024-01-15
SELECT CONVERT(VARCHAR(10), GETDATE(), 111); -- 2024/01/15
-- 僅時間
SELECT CONVERT(VARCHAR(8), GETDATE(), 108); -- 14:30:05
-- 完整日期時間
SELECT CONVERT(VARCHAR(19), GETDATE(), 120); -- 2024-01-15 14:30:05
SELECT CONVERT(VARCHAR(23), GETDATE(), 121); -- 2024-01-15 14:30:05.123
-- 中文格式
SELECT FORMAT(GETDATE(), 'yyyy年MM月dd日 HH:mm:ss', 'zh-CN'); -- SQL 2012+
避坑指南
VARCHAR(10) 截斷風險:Style 120 需 19 字符,長度不足會靜默截斷
- 語言環境影響 Style 0/100/9/109 等月份名稱輸出
- SQL 2012+ 首選
FORMAT(),支援 .NET 自定義格式字串,文化相關更強
