首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> SQL Server 資料庫 >> 關於SqlServer

SQL Server CONVERT 函數日期格式化完整參考表與實用範例

     編輯:關於SqlServer

CONVERT 是 SQL Server 將日期/時間轉為字串最常用的函數,支援超過 30 種 style 代碼。本文整理完整對照表並提供即用範例,方便開發隨時查閱。

日期/時間 Style 代碼對照表

無世紀 (yy)有世紀 (yyyy)標準/輸出範例備註
0 / 1000 / 100mon dd yyyy hh:miAM (PM)預設
1101mm/dd/yyyy美國
2102yyyy.mm.ddANSI
3103dd/mm/yyyy英國/法國
4104dd.mm.yyyy德國
5105dd-mm-yyyy義大利
6106dd mon yyyy
7107mon dd, yyyy
8108hh:mm:ss僅時間
9 / 1099 / 109mon dd yyyy hh:mi:ss:mmmAM (PM)預設+毫秒
10110mm-dd-yyyy美國
11111yyyy/mm/dd日本
12112yyyymmddISO (無分隔)
13 / 11313 / 113dd mon yyyy hh:mm:ss:mmm (24h)歐洲預設+毫秒
14114hh:mi:ss:mmm (24h)僅時間+毫秒
20 / 12020 / 120yyyy-mm-dd hh:mm:ss[.fff]ODBC 標準
21 / 12121 / 121yyyy-mm-dd hh:mm:ss[.fff]ODBC + 毫秒
-126yyyy-mm-ddThh:mm:ss:mmmISO8601 (XML 專用)
130130dd mon yyyy hh:mi:ss:mmmAM科威特 (Hijri)
131131dd/mm/yyyy hh:mi:ss:mmmAM科威特

注意:style 值加 100 即為含世紀 (yyyy) 版本;預設值 (0,9,13,20,21) 均回傳 4 位數年份。

常用實戰範例

-- 完整日期時間 (可排序、無歧義)
SELECT CONVERT(varchar, GETDATE(), 120);  -- 2024-01-15 14:30:45
SELECT CONVERT(varchar, GETDATE(), 121);  -- 2024-01-15 14:30:45.123

-- 純日期 (常用於 GROUP BY、檔名、ETL 批次代碼)
SELECT CONVERT(varchar(10), GETDATE(), 112);  -- 20240115
SELECT CONVERT(varchar(10), GETDATE(), 111);  -- 2024/01/15
SELECT CONVERT(varchar(10), GETDATE(), 102);  -- 2024.01.15

-- 常見地區格式
SELECT CONVERT(varchar(10), GETDATE(), 101);  -- 01/15/2024 (美)
SELECT CONVERT(varchar(10), GETDATE(), 103);  -- 15/01/2024 (英/法)
SELECT CONVERT(varchar(10), GETDATE(), 104);  -- 15.01.2024 (德)
SELECT CONVERT(varchar(10), GETDATE(), 105);  -- 15-01-2024 (義)

-- 僅時間
SELECT CONVERT(varchar(8), GETDATE(), 108);   -- 14:30:45
SELECT CONVERT(varchar(12), GETDATE(), 114);  -- 14:30:45.123

-- 產生無分隔時間戳 (檔名、批次 ID)
SELECT REPLACE(REPLACE(REPLACE(CONVERT(varchar, GETDATE(), 120), '-', ''), ' ', ''), ':', '');
-- 20240115143045

進階提示

  • 兩位數年份截止點:SQL Server 預設 2049 (49→2049, 50→1950),可用 sp_configure 'two digit year cutoff' 修改,但強烈建議一律使用 4 位數年份 避免歧義
  • smalldatetime 轉字串時,秒/毫秒位會補 0
  • 利用 varchar(n) 長度截斷不需要的日期部分 (如 varchar(7) 取年月)
  • 數值/貨幣轉字串亦有專屬 style (0/1/2),詳見官方文件

建議將本表加入開發團隊 Wiki 或列印貼在工位,查詢格式代碼不再需要 Google。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved