日期時間格式化是資料庫與應用程式開發的高頻需求。SQL Server CONVERT 提供超過 30 種樣式代碼,C# DateTime 則支援標準/自訂格式字串。本文整理兩大平台最常用的格式對照,方便快速查閱。
語法:CONVERT(varchar(100), GETDATE(), style)
| Style | 輸出範例 | 說明 |
|---|---|---|
| 0 / 100 | 05 16 2006 10:57AM | 預設 mon dd yyyy hh:miAM/PM |
| 1 | 05/16/06 | 美式 mm/dd/yy |
| 2 | 06.05.16 | yy.mm.dd |
| 3 | 16/05/06 | 英式 dd/mm/yy |
| 4 | 16.05.06 | dd.mm.yy |
| 5 | 16-05-06 | dd-mm-yy |
| 6 | 16 05 06 | dd mm yy |
| 7 | 05 16, 06 | Mon dd, yy |
| 8 / 24 / 108 | 10:57:46 | hh:mi:ss (24H) |
| 9 / 109 | 05 16 2006 10:57:46:827AM | 含毫秒 + AM/PM |
| 10 | 05-16-06 | mm-dd-yy |
| 11 | 06/05/16 | yy/mm/dd |
| 12 | 060516 | yymmdd |
| 13 / 113 | 16 05 2006 10:57:46:937 | dd mon yyyy hh:mi:ss:mmm (24H) |
| 14 / 114 | 10:57:46:967 | hh:mi:ss:mmm (24H) |
| 20 / 120 | 2006-05-16 10:57:47 | ODBC 標準 yyyy-mm-dd hh:mi:ss (24H) |
| 21 / 121 | 2006-05-16 10:57:47.157 | ODBC + 毫秒 |
| 22 | 05/16/06 10:57:47 AM | mm/dd/yy hh:mi:ss AM/PM |
| 23 | 2006-05-16 | ISO 8601 日期 yyyy-mm-dd |
| 25 | 2006-05-16 10:57:47.250 | yyyy-mm-dd hh:mi:ss.mmm |
| 101 | 05/16/2006 | mm/dd/yyyy |
| 102 | 2006.05.16 | yyyy.mm.dd |
| 103 | 16/05/2006 | dd/mm/yyyy |
| 104 | 16.05.2006 | dd.mm.yyyy |
| 105 | 16-05-2006 | dd-mm-yyyy |
| 106 | 16 05 2006 | dd mon yyyy |
| 107 | 05 16, 2006 | Mon dd, yyyy |
| 110 | 05-16-2006 | mm-dd-yyyy |
| 111 | 2006/05/16 | yyyy/mm/dd |
| 112 | 20060516 | yyyymmdd (適合排序/檔名) |
| 126 | 2006-05-16T10:57:49.827 | ISO 8601 含 T 分隔 |
| 130 | 18 ??? ???? 1427 10:57:49:907AM | 回曆日期 |
| 131 | 18/04/1427 10:57:49:920AM | 回曆 dd/mm/yyyy |
23 (yyyy-mm-dd) 或 112 (yyyymmdd)8 / 24 / 108 (hh:mi:ss)120 (yyyy-mm-dd hh:mi:ss) 或 121 (含毫秒)126 (ISO 8601 標準)| 格式 | 輸出範例 (2005-11-05 14:06:25) | 說明 |
|---|---|---|
| d | 2005-11-05 | 短日期 |
| D | 2005年11月5日 | 長日期 |
| f | 2005年11月5日 14:06 | 完整日期時間 (短時間) |
| F | 2005年11月5日 14:06:23 | 完整日期時間 (長時間) |
| g | 2005-11-5 14:06 | 一般日期時間 (短時間) |
| G | 2005-11-5 14:06:23 | 一般日期時間 (長時間) |
| M / m | 11月5日 | 月日 |
| r / R | Sat, 05 Nov 2005 14:06:25 GMT | RFC1123 |
| s | 2005-11-05T14:06:25 | 可排序日期時間 (ISO 8601) |
| t | 14:06 | 短時間 |
| T | 14:06:23 | 長時間 |
| u | 2005-11-05 14:06:25Z | 通用可排序 (UTC) |
| U | 2005年11月5日 6:23:23 | 完整日期時間 (UTC) |
| y / Y | 2005年11月 | 年月 |
yyyy 四位年份 MM 月份(01-12) dd 日(01-31)
HH 24小時(00-23) hh 12小時(01-12) mm 分鐘(00-59)
ss 秒(00-59) fff 毫秒(000-999) zzz 時區偏移
範例:dt.ToString("yyyyMMddHHmmssfff") → 20051105140625123
dt.Year, dt.Month, dt.Day, dt.Hour, dt.Minute, dt.Second, dt.Milliseconddt.DayOfWeek (列舉)、dt.DayOfYear、dt.Ticks、dt.TimeOfDaydt.AddYears(1), dt.AddDays(-1), dt.AddHours(2.5) 等運算dt.ToUniversalTime(), dt.ToLocalTime() 時區轉換dt.GetDateTimeFormats('s')[0] 取得特定標準格式的所有文化特性變體| 場景 | SQL Server | C# |
|---|---|---|
| 資料庫儲存/比對 | CONVERT(..., 23) → '2006-05-16' | dt.ToString("yyyy-MM-dd") |
| 檔名/批次代碼 | CONVERT(..., 112) → '20060516' | dt.ToString("yyyyMMdd") |
| API 回傳/JSON | CONVERT(..., 126) → '2006-05-16T10:57:49.827' | dt.ToString("o") 或 "yyyy-MM-ddTHH:mm:ss.fff" |
| 使用者顯示 (繁中) | CONVERT(..., 111) → '2006/05/16' | dt.ToString("yyyy年M月d日") |
SET LANGUAGE 影響,多語系環境慎用。MM (月) vs mm (分),HH (24H) vs hh (12H)。G 格式,受 CurrentCulture 影響,跨伺服器部署請明確指定格式或 CultureInfo.InvariantCulture。