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

SQL Server 常用函數詳解:CONVERT、CAST 與 DATEADD

     編輯:關於SqlServer

SQL Server 核心轉換與日期函數實戰指南

在 T-SQL 開發中,資料型別轉換與日期時間運算是最高頻的操作之一。本文深入解析 CONVERT、CAST、DATEADD 三大核心函數的語法、參數細節與實際應用場景,助你撰寫更精準、效能更佳的查詢語句。

1. CONVERT 函數:格式化輸出的利器

CONVERT 專為 SQL Server 設計,支援在型別轉換時指定輸出格式(特別是日期時間),是報表與匯出功能的首選。

CONVERT(data_type(length), expression, style)
  • data_type(length):目標資料型別(可選長度),如 VARCHAR(20)、DATETIME。
  • expression:待轉換的運算式或欄位。
  • style:關鍵參數,僅適用於日期/時間與字串互轉,決定輸出格式(如 120 = 'YYYY-MM-DD HH:MI:SS')。

常用 Style 代碼速查:

Style輸出範例說明
1202024-05-18 14:30:00ODBC 標準 (YYYY-MM-DD HH:MI:SS)
1112024/05/18日本標準 (YYYY/MM/DD)
10318/05/2024英式 (DD/MM/YYYY)
12240518精簡 (YYMMDD)

範例: 將 GETDATE() 格式化為 'YYYY-MM-DD':

SELECT CONVERT(VARCHAR(10), GETDATE(), 120) AS formatted_date;
-- 結果:2024-05-18

2. CAST 函數:ANSI 標準的跨平台選擇

CAST 遵循 ANSI SQL 標準,適用於需跨資料庫平台(Oracle、PostgreSQL、MySQL 等)的專案,語法簡潔但不支援格式化參數。

CAST(expression AS data_type[(length)])
  • expression:任意有效運算式。
  • data_type:目標型別(含 XML、BIGINT、SQL_VARIANT 等),不可使用別名型別。
  • length:選填,預設 30。

範例: 整數轉字串、字串轉日期:

SELECT CAST(12345 AS VARCHAR(10));        -- '12345'
SELECT CAST('2024-05-18' AS DATE);        -- 2024-05-18

3. DATEADD 函數:日期時間運算核心

用於在指定日期加減年、月、日、時、分、秒等間隔,常用於計算截止日、週期性報表範圍。

DATEADD(datepart, number, date)

常用 datepart: YEAR/YY、MONTH/MM、DAY/DD、HOUR/HH、MINUTE/MI、SECOND/SS。

範例:

-- 30 天後
SELECT DATEADD(DAY, 30, GETDATE());
-- 1 個月前
SELECT DATEADD(MONTH, -1, GETDATE());
-- 找出本月第一天
SELECT DATEADD(DAY, 1 - DAY(GETDATE()), CAST(GETDATE() AS DATE));

4. 選擇建議與效能考量

  • 需格式化輸出(報表、匯出、前端顯示)→ CONVERT
  • 純型別轉換、追求可移植性 → CAST
  • 日期運算 → DATEADD / DATEDIFF / EOMONTH
  • 避免在 WHERE 條件欄位上使用函數(如 WHERE CONVERT(...)=...),會導致索引失效;應改寫為 WHERE date_col >= ... AND date_col < ...。

總結

掌握 CONVERT 的 style 參數、CAST 的標準語法、DATEADD 的 datepart 單位,能讓你在資料清洗、報表產生、跨平台遷移等場景中遊刃有餘。建議收藏常用 Style 代碼表,開發時隨查隨用。

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