預設日期格式
中文版 SQL Server datetime 預設輸出:yyyy-mm-dd hh:mi:ss.mmm (例:2004-09-12 11:06:08.177)
常用 CONVERT 樣式代碼對照表
| Style | 格式範例 | 說明 |
| 101 | 09/12/2004 | 美國 mm/dd/yyyy |
| 102 | 2004.09.12 | ANSI yy.mm.dd |
| 103 | 12/09/2004 | 英國/法國 dd/mm/yyyy |
| 104 | 12.09.2004 | 德式 dd.mm.yyyy |
| 105 | 12-09-2004 | 義式 dd-mm-yyyy |
| 106 | 12 09 2004 | 空格分隔 dd mon yyyy |
| 107 | Sep 12, 2004 | 月份縮寫 mon dd, yyyy |
| 108 | 11:06:08 | 僅時間 hh:mi:ss |
| 109 | Sep 12 2004 11:06:08:177AM | 預設 + 毫秒 (mon dd yyyy hh:mi:ss:mmmAM) |
| 110 | 09-12-2004 | 美國 mm-dd-yyyy |
| 111 | 2004/09/12 | 日本/ISO yyyy/mm/dd |
| 112 | 20040912 | ISO 純數字 yyyymmdd (最適合排序/檔名) |
| 113 | 12 Sep 2004 11:06:08:177 | 歐洲預設 dd mon yyyy hh:mi:ss:mmm |
| 114 | 11:06:08.177 | 僅時間 + 毫秒 hh:mi:ss.mmm |
| 120 | 2004-09-12 11:06:08 | ODBC 標準 yyyy-mm-dd hh:mi:ss (24小時制) |
| 121 | 2004-09-12 11:06:08.177 | ODBC + 毫秒 yyyy-mm-dd hh:mi:ss.mmm |
實用組合技巧
-- 純數字日期時間 (檔名、批次代碼)
SELECT REPLACE(REPLACE(REPLACE(CONVERT(VARCHAR, GETDATE(), 120), '-', ''), ' ', ''), ':', '');
-- 結果:20040912110608
-- 只要日期部份
SELECT CONVERT(CHAR(8), GETDATE(), 112); -- 20040912
SELECT CONVERT(CHAR(10), GETDATE(), 120); -- 2004-09-12
-- 只要時間部份
SELECT CONVERT(CHAR(8), GETDATE(), 108); -- 11:06:08
Style 參數速查規則
- ≤ 100:通常不含世紀 (yy),如 1 (mm/dd/yy)、2 (yy.mm.dd)。
- ≥ 100:含世紀 (yyyy),如 101 (mm/dd/yyyy)、112 (yyyymmdd)。
- 120/121:ODBC 標準,含世紀、24小時制、可選毫秒,跨語言環境最安全。
VARCHAR 長度若短於輸出會被截斷 (如 VARCHAR(10) 只取日期部份);建議用 CHAR(n) 固定長度。
日期零件 (DATEPART/DATENAME) 代碼
| 代碼 | 意義 | 範圍 |
| yy / yyyy | 年 | 1753-9999 |
| qq / q | 季 | 1-4 |
| mm / m | 月 | 1-12 |
| dy / y | 年內天數 | 1-366 |
| dd / d | 月內天數 | 1-31 |
| wk / ww | 週 | 1-54 |
| dw / w | 星期 | 1-7 (週日=1) |
| hh | 時 | 0-23 |
| mi / n | 分 | 0-59 |
| ss / s | 秒 | 0-59 |
| ms | 毫秒 | 0-999 |