SQL Server CONVERT(varchar, date_column, style) 的第三個參數 style 決定輸出格式。以下為完整對照表 (適用 SQL Server 2008+),實測可直接套用。
| Style | 標準 | 輸出範例 (2024-03-15 14:30:45.123) | 備註 |
|---|---|---|---|
| 0 / 100 | mon dd yyyy hh:miAM/PM | Mar 15 2024 2:30PM | 預設 |
| 1 | mm/dd/yy | 03/15/24 | 美式短日期 |
| 2 | yy.mm.dd | 24.03.15 | ANSI |
| 3 | dd/mm/yy | 15/03/24 | 英式/歐式 |
| 4 | dd.mm.yy | 15.03.24 | 德式 |
| 5 | dd-mm-yy | 15-03-24 | |
| 6 | dd mon yy | 15 Mar 24 | |
| 7 | mon dd, yy | Mar 15, 24 | |
| 8 | hh:mi:ss | 14:30:45 | 僅時間 |
| 9 / 109 | mon dd yyyy hh:mi:ss:mmmAM/PM | Mar 15 2024 2:30:45:123PM | 含毫秒 |
| 10 | mm-dd-yy | 03-15-24 | |
| 11 | yy/mm/dd | 24/03/15 | |
| 12 | yymmdd | 240315 | 緊湊 |
| 13 / 113 | dd mon yyyy hh:mi:ss:mmm (24h) | 15 Mar 2024 14:30:45:123 | 歐洲預設 + 毫秒 |
| 14 | hh:mi:ss:mmm (24h) | 14:30:45:123 | 僅時間 + 毫秒 |
| 20 / 120 | yyyy-mm-dd hh:mi:ss (24h) | 2024-03-15 14:30:45 | ODBC 標準 (常用) |
| 21 / 121 | yyyy-mm-dd hh:mi:ss.mmm (24h) | 2024-03-15 14:30:45.123 | ODBC + 毫秒 |
| 22 | mm/dd/yy hh:mi:ss AM/PM | 03/15/24 2:30:45 PM | 美式 + 時間 |
| 23 | yyyy-mm-dd | 2024-03-15 | ISO 日期 (常用) |
| 24 | hh:mi:ss | 14:30:45 | ISO 時間 |
| 25 | yyyy-mm-dd hh:mi:ss.mmm | 2024-03-15 14:30:45.123 | 同 121 |
| 101 | mm/dd/yyyy | 03/15/2024 | 美式四位年 |
| 102 | yyyy.mm.dd | 2024.03.15 | ANSI 四位年 |
| 103 | dd/mm/yyyy | 15/03/2024 | 英式四位年 |
| 104 | dd.mm.yyyy | 15.03.2024 | 德式四位年 |
| 105 | dd-mm-yyyy | 15-03-2024 | |
| 106 | dd mon yyyy | 15 Mar 2024 | |
| 107 | mon dd, yyyy | Mar 15, 2024 | |
| 108 | hh:mi:ss | 14:30:45 | 同 8 |
| 110 | mm-dd-yyyy | 03-15-2024 | |
| 111 | yyyy/mm/dd | 2024/03/15 | |
| 112 | yyyymmdd | 20240315 | 緊湊四位年 |
| 126 | yyyy-mm-ddThh:mi:ss.mmm (ISO8601) | 2024-03-15T14:30:45.123 | XML/JSON 標準 |
| 127 | yyyy-mm-ddThh:mi:ss.mmmZ (UTC) | 2024-03-15T14:30:45.123Z | UTC 時間 |
| 130 | dd mon yyyy hh:mi:ss:mmmAM/PM (Hijri) | 04 Ramadan 1445 2:30:45:123PM | 伊斯蘭曆 |
| 131 | dd/mm/yyyy hh:mi:ss:mmmAM/PM (Hijri) | 04/09/1445 2:30:45:123PM | 伊斯蘭曆數字 |
-- 只取日期 (YYYY-MM-DD)
SELECT CONVERT(varchar(10), GETDATE(), 23); -- 2024-03-15
-- 完整日期時間 (YYYY-MM-DD HH:MI:SS)
SELECT CONVERT(varchar(19), GETDATE(), 20); -- 2024-03-15 14:30:45
-- ISO8601 含毫秒
SELECT CONVERT(varchar(23), GETDATE(), 126); -- 2024-03-15T14:30:45.123
-- 中文常用:YYYY年MM月DD日
SELECT CONVERT(varchar(10), GETDATE(), 111); -- 2024/03/15
-- 再用 REPLACE 轉中文
SELECT REPLACE(CONVERT(varchar(10), GETDATE(), 111), '/', '年') + '月' + RIGHT(CONVERT(varchar(10), GETDATE(), 111), 2) + '日';
$stmt = $pdo->prepare("SELECT id, CONVERT(varchar(10), created_at, 23) AS date_str FROM orders WHERE status = ?");
$stmt->execute([1]);
while ($row = $stmt->fetch()) {
echo $row['date_str']; // 直接獲得格式化字串
}
varchar 長度需足夠容納格式化字串 (如 style 126 需 23),否則會截斷。datetime/datetime2/smalldatetime/date/time,字串會隱含轉換可能失敗。