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

SQL Server CONVERT 函數完整指南:日期時間格式化樣式代碼對照表與實戰技巧

     編輯:關於SqlServer

語法

CONVERT ( data_type [ ( length ) ] , expression [ , style ] )
  • style 僅在 日期時間類型 ↔ 字串類型 轉換時生效。
  • 若省略 style,預設為 0 (mon dd yyyy hh:miAM/PM)。

完整樣式代碼對照表

不含世紀 (yy)含世紀 (yyyy)輸出格式範例說明
-0 或 100Jan 15 2024 3:45PM預設 mon dd yyyy hh:miAM/PM
110101/15/2024美式 mm/dd/yyyy
21022024.01.15yyyy.mm.dd (ANSI)
310315/01/2024英式 dd/mm/yyyy
410415.01.2024dd.mm.yyyy
510515-01-2024dd-mm-yyyy
610615 Jan 2024dd mon yyyy
7107Jan 15, 2024mon dd, yyyy
810815:45:30hh:mi:ss (24h)
-9 或 109Jan 15 2024 3:45:30:123PM含毫秒 mon dd yyyy hh:mi:ss:mmmAM/PM
1011001-15-2024mm-dd-yyyy
111112024/01/15yyyy/mm/dd
1211220240115yyyymmdd (ISO 適合排序/檔名)
-13 或 11315 Jan 2024 15:45:30:123歐洲預設 dd mon yyyy hh:mi:ss:mmm (24h)
1411415:45:30:123hh:mi:ss:mmm (24h)
-20 或 1202024-01-15 15:45:30ODBC 標準 yyyy-mm-dd hh:mi:ss (24h)
-21 或 1212024-01-15 15:45:30.123ODBC 毫秒 yyyy-mm-dd hh:mi:ss.mmm (24h)
-1262024-01-15T15:45:30.123ISO 8601 (XML/JSON 常用)
-1272024-01-15T15:45:30.123ZISO 8601 UTC
-13015 جمادى الأولى 1445 3:45:30 PM回曆 (Hijri)
-13115/05/1445 3:45:30 PM回曆 dd/mm/yyyy

常用實戰範例

1. 取得純日期字串 (yyyy-MM-dd)

SELECT CONVERT(VARCHAR(10), GETDATE(), 120);  -- 2024-01-15
SELECT CONVERT(CHAR(10), GETDATE(), 120);     -- 固定長度 10

2. 取得純時間字串 (HH:mm:ss)

SELECT CONVERT(VARCHAR(8), GETDATE(), 108);   -- 15:45:30

3. 檔名/批次代碼用無分隔符日期

SELECT CONVERT(VARCHAR(8), GETDATE(), 112);   -- 20240115

4. 字串轉日期 (需先 CAST 為日期類型再 CONVERT)


-- 字串 '20240115' 轉日期
SELECT CONVERT(DATETIME, '20240115', 112);  -- 2024-01-15 00:00:00.000

-- 字串 '2024-01-15 15:45:30' 轉日期
SELECT CONVERT(DATETIME, '2024-01-15 15:45:30', 120);

5. Excel 匯入數值日期 (20240115.0000) 處理


DECLARE @raw VARCHAR(20) = '20240115.0000';
-- 步驟 1: 去除小數部份 → 整數字串
DECLARE @intStr VARCHAR(8) = CONVERT(VARCHAR(8), CAST(@raw AS INT));
-- 步驟 2: 轉日期
SELECT CONVERT(DATETIME, @intStr, 112);  -- 2024-01-15 00:00:00.000

進階:FORMAT 函數 (SQL 2012+)


SELECT FORMAT(GETDATE(), 'yyyy-MM-dd HH:mm:ss', 'zh-TW');  -- 2024-01-15 15:45:30
SELECT FORMAT(GETDATE(), 'D', 'zh-TW');                     -- 2024年1月15日

FORMAT 依賴 .NET CLR,效能較 CONVERT 低,適合顯示層、報表;高頻 ETL 建議仍用 CONVERT。

避坑提醒

  • style 參數不支援變數,需為常數;動態格式需動態 SQL。
  • VARCHAR 長度過短會截斷,建議用 VARCHAR(23) 以上 (含毫秒) 或 CHAR(10) (純日期)。
  • 語言設定 (SET LANGUAGE) 會影響月份名稱輸出 (mon),跨語言環境建議用數字格式 (112, 120, 121)。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved