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

SQL Server CAST 與 CONVERT 類型轉換差異全解析:日期格式化獨家優勢

     編輯:關於SqlServer

核心結論

功能重疊: 兩者均可進行類型轉換,語法不同。
CAST:ANSI 標準,語法簡潔,通用性強。
CONVERT:T-SQL 專有,支援格式化樣式碼(日期/數值),功能更強。

語法對比

-- CAST (ANSI 標準)
CAST ( expression AS data_type [ ( length ) ] )

-- CONVERT (T-SQL 專有)
CONVERT ( data_type [ ( length ) ] , expression [ , style ] )

基礎轉換實測(功能等價)

SELECT CAST('123' AS INT)        -- 123
SELECT CONVERT(INT, '123')       -- 123
SELECT CAST(123.4 AS INT)        -- 123
SELECT CONVERT(INT, 123.4)       -- 123
SELECT CAST('123.4' AS DECIMAL)  -- 123
SELECT CONVERT(DECIMAL, '123.4') -- 123
SELECT CAST('123.4' AS DECIMAL(9,2))  -- 123.40
SELECT CONVERT(DECIMAL(9,2), '123.4') -- 123.40

CONVERT 獨門絕技:日期/數值格式化(style 參數)

DECLARE @Num MONEY = 1234.56
SELECT CONVERT(VARCHAR(20), @Num, 0)  -- 1234.56      (預設,無千分位)
SELECT CONVERT(VARCHAR(20), @Num, 1)  -- 1,234.56     (千分位逗號)
SELECT CONVERT(VARCHAR(20), @Num, 2)  -- 1234.5600    (4 位小數)

常用日期格式化樣式碼

Style輸出範例說明
10101/15/2024美式 mm/dd/yyyy
1022024.01.15yyyy.mm.dd
10315/01/2024英式 dd/mm/yyyy
11001-15-2024mm-dd-yyyy
1112024/01/15yyyy/mm/dd
11220240115ISO yyyymmdd(排序友善)
1202024-01-15 14:30:25ODBC 標準 yyyy-mm-dd hh:mi:ss(24h)
1212024-01-15 14:30:25.123含毫秒

選擇指南

  • 跨資料庫移植/標準合規: 用 CAST。
  • 需日期格式化輸出、數值千分位、特定精度控制: 必須用 CONVERT。
  • 隱式轉換場景: 盡量顯式 CAST/CONVERT,避免隱式轉換導致索引失效/精度損失。

陷阱提醒

SELECT CONVERT(INT, '123.4')  -- 錯誤:字串含小數點無法直接轉 INT
-- 需先轉 DECIMAL 再轉 INT,或用 ROUND/FLOOR

總結

CAST 走標準簡潔路線,CONVERT 攜格式化大招。實務上:內部運算用 CAST,外部呈現用 CONVERT。

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