SQL Server 開發中頻繁處理日期時間轉換,格式代碼眾多難以記憶。本文整理常用日期時間函數與 CONVERT 格式代碼對照表,供快速查閱參考。
中文版預設 datetime 格式:yyyy-mm-dd hh:mm:ss.mmm
-- 短日期:yyyy-m-d
SELECT REPLACE(CONVERT(varchar(10), GETDATE(), 120), '-0', '-')
-- 長日期:yyyy年mm月dd日
SELECT STUFF(STUFF(CONVERT(char(8), GETDATE(), 112), 5, 0, N'年'), 8, 0, N'月') + N'日'
-- 短日期:yyyy年m月d日
SELECT DATENAME(Year, GETDATE()) + N'年' + CAST(DATEPART(Month, GETDATE()) AS varchar) + N'月' + DATENAME(Day, GETDATE()) + N'日'
-- 完整日期時間:yyyy-mm-dd hh:mi:ss:mmm
SELECT CONVERT(char(11), GETDATE(), 120) + CONVERT(char(12), GETDATE(), 114)
語法:CONVERT(varchar(100), GETDATE(), style),可依 varchar 長度截取所需部分。
| Style | 輸出範例 | 說明 |
|---|---|---|
| 0 / 100 | 05 16 2006 10:57AM | 預設 mon dd yyyy hh:miAM/PM |
| 1 / 101 | 05/16/06 / 05/16/2006 | 美國 mm/dd/yy / mm/dd/yyyy |
| 2 / 102 | 06.05.16 / 2006.05.16 | ANSI yy.mm.dd / yyyy.mm.dd |
| 3 / 103 | 16/05/06 / 16/05/2006 | 英/法 dd/mm/yy / dd/mm/yyyy |
| 4 / 104 | 16.05.06 / 16.05.2006 | 德 dd.mm.yy / dd.mm.yyyy |
| 5 / 105 | 16-05-06 / 16-05-2006 | 義 dd-mm-yy / dd-mm-yyyy |
| 6 / 106 | 16 05 06 / 16 05 2006 | dd mon yy / dd mon yyyy |
| 7 / 107 | 05 16, 06 / 05 16, 2006 | mon dd, yy / mon dd, yyyy |
| 8 / 108 | 10:57:46 | hh:mm:ss |
| 9 / 109 | 05 16 2006 10:57:46:827AM | 預設+毫秒 mon dd yyyy hh:mi:ss:mmmAM/PM |
| 10 / 110 | 05-16-06 / 05-16-2006 | 美國 mm-dd-yy / mm-dd-yyyy |
| 11 / 111 | 06/05/16 / 2006/05/16 | 日 yy/mm/dd / yyyy/mm/dd |
| 12 / 112 | 060516 / 20060516 | ISO yymmdd / yyyymmdd |
| 13 / 113 | 16 05 2006 10:57:46:937 | 歐洲預設+毫秒 dd mon yyyy hh:mm: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 |
| 21 / 121 | 2006-05-16 10:57:47.157 | ODBC 標準+毫秒 yyyy-mm-dd hh:mi:ss.mmm |
| 22 | 05/16/06 10:57:47 AM | 美國+時間 |
| 23 | 2006-05-16 | ISO 日期 yyyy-mm-dd |
| 24 | 10:57:47 | ISO 時間 hh:mi:ss |
| 25 | 2006-05-16 10:57:47.250 | ISO 日期時間+毫秒 |
| 126 | 2006-05-16T10:57:49.827 | ISO8601 yyyy-mm-ddThh:mm:ss.mmm |
| 130 | 18 ???? ?????? 1427 10:57:49:907AM | 科威特希吉拉曆 |
| 131 | 18/04/1427 10:57:49:920AM | 科威特希吉拉曆 dd/mm/yy |
REPLACE(REPLACE(REPLACE(CONVERT(varchar, GETDATE(), 120), '-', ''), ' ', ''), ':', '') → 20040912110608