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

SQL Server 日期時間格式轉換大全:CONVERT 風格代碼 130+ 完整對照與 ODBC/ISO8601 最佳實踐

     編輯:關於SqlServer

核心語法

CONVERT(VARCHAR(100), datetime_expression, style)
-- style 參數決定輸出格式,以下為完整對照 (基準 2006-05-16 10:57:49.123)

完整 Style 代碼對照表 (含 Hijri 曆)

Style輸出範例標準/說明世紀位
0 / 100May 16 2006 10:57AM預設100=yyyy
1 / 10105/16/2006美國101=yyyy
2 / 1022006.05.16ANSI102=yyyy
3 / 10316/05/2006英國/法國103=yyyy
4 / 10416.05.2006德國104=yyyy
5 / 10516-05-2006義大利105=yyyy
6 / 10616 May 2006-106=yyyy
7 / 107May 16, 2006-107=yyyy
8 / 10810:57:49時間-
9 / 109May 16 2006 10:57:49:123AM預設+毫秒109=yyyy
10 / 11005-16-2006美國110=yyyy
11 / 1112006/05/16日本111=yyyy
12 / 11220060516ISO112=yyyy
13 / 11316 May 2006 10:57:49:123歐洲預設+毫秒 (24h)113=yyyy
14 / 11410:57:49:123時間+毫秒 (24h)-
20 / 1202006-05-16 10:57:49ODBC 規範120=yyyy
21 / 1212006-05-16 10:57:49.123ODBC+毫秒121=yyyy
1262006-05-16T10:57:49.123ISO8601 (XML/JSON)yyyy
13018 ??? ????? 1427 10:57:49:123AMHijri (伊斯蘭曆) 科威特演算法yyyy
13118/04/1427 10:57:49:123AMHijriyyyy

關鍵規律

  • Style ≥ 100 含世紀 (yyyy),Style < 100 僅兩位年 (yy)
  • 生產環境嚴禁使用 < 100:兩位年會觸發 2049/2030 截斷年問題
  • 無歧義通用格式:120 (ODBC)、121 (ODBC+毫秒)、126 (ISO8601)
  • 截斷控制:VARCHAR(10) 只取日期,19 含秒,23 含毫秒

最佳實踐建議

場景推薦 Style範例
API/JSON/日誌/跨系統1262023-09-22T10:57:49.123
資料庫間 ETL/匯入匯出1212023-09-22 10:57:49.123
報表/人工閱讀 (中文)111 或 1202023/09/22 或 2023-09-22
僅日期索引/分區11220230922
字串解析 → 日期同輸出 StyleCONVERT(DATETIME, '2023-09-22', 120)

參數說明 (官方文檔摘錄)

  • data_type:目標型別 (char/varchar/nchar/nvarchar/binary/varbinary)
  • length:字串型別可選長度,預設 30
  • expression:任意合法運算式
  • style:日期/數值格式代碼,NULL 返回 NULL

兩位數年份截斷年配置

-- 查看當前截斷年 (預設 2049)
EXEC sp_configure 'two digit year cutoff';
-- 修改為 2030 (相容舊應用)
EXEC sp_configure 'two digit year cutoff', 2030; RECONFIGURE;
-- 建議:程式碼層面統一四位年,不依賴此設定
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved