常用查詢範例
-- 依特定日期格式查詢
SELECT * FROM 表名 WHERE CONVERT(VARCHAR(10), 日期欄位, 23) = '2008-12-15';
-- 風格 23 = 'YYYY-MM-DD' (ISO 8601)
CONVERT 風格代碼完整表 (GETDATE() 為 2006-05-16 10:57:46.827)
| 代碼 | 輸出範例 | 說明 |
| 0 / 100 | May 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 mon yy |
| 7 | May 16, 06 | mon dd, yy |
| 8 / 108 | 10:57:46 | hh:mi:ss |
| 9 / 109 | May 16 2006 10:57:46:827AM | 預設 + 毫秒 |
| 10 | 05-16-06 | mm-dd-yy |
| 11 | 06/05/16 | yy/mm/dd |
| 12 | 060516 | yymmdd |
| 13 / 113 | 16 May 2006 10:57:46:937 | 歐洲預設 + 毫秒 |
| 14 / 114 | 10:57:46:967 | hh:mi:ss:mmm |
| 20 / 120 | 2006-05-16 10:57:47 | YYYY-MM-DD hh:mi:ss (24h) |
| 21 / 121 | 2006-05-16 10:57:47.157 | YYYY-MM-DD hh:mi:ss.mmm |
| 22 | 05/16/06 10:57:47 AM | 美式 + 時間 |
| 23 | 2006-05-16 | ISO 8601 日期 |
| 24 | 10:57:47 | hh:mi:ss |
| 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 May 2006 | dd mon yyyy |
| 107 | May 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 | 回曆 (Hijri) |
| 131 | 18/04/1427 10:57:49:920AM | 回曆 dd/mm/yyyy |
實務建議
- 資料交換/匯出:優先使用 126 (ISO 8601) 或 23/112,無歧義且可排序。
- 中文報表:
CONVERT(VARCHAR, GETDATE(), 111) → 2006/05/16 符合習慣。
- 避免在 WHERE 條件對欄位用 CONVERT(導致索引失效),改用範圍查詢:
WHERE 日期欄位 >= '2008-12-15' AND 日期欄位 < '2008-12-16'
- SQL Server 2012+ 建議改用
FORMAT 或 TRY_CONVERT,功能更強、型別安全。