首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫

SQL Server 日期時間函數完全指南:GETDATE、DATEADD、DATEDIFF、DATEPART、DATENAME、CONVERT 格式代碼

     編輯:MySQL 資料庫相關知識

SQL Server 日期時間處理核心函數與 CONVERT 格式代碼完整對照,涵蓋取得、運算、擷取、格式化、間隔參數表。

核心函數速查

函數用途範例
GETDATE()目前系統日期時間2023-10-15 14:30:00.123
DATEADD(interval, n, date)日期加減DATEADD(DAY, 2, '2023-10-15') → 2023-10-17
DATEDIFF(interval, d1, d2)日期差值 (d2-d1)DATEDIFF(DAY, '2023-10-01', '2023-10-18') → 17
DATEPART(interval, date)擷取整數部份DATEPART(MONTH, '2023-10-15') → 10
DATENAME(interval, date)擷取字串名稱DATENAME(WEEKDAY, '2023-10-15') → Sunday
DAY()/MONTH()/YEAR()單一成分捷徑MONTH(GETDATE()) → 10

CONVERT 格式代碼對照 (常用)

代碼輸出範例說明
1202023-10-15 14:30:00ODBC 標準 yyyy-mm-dd hh:mi:ss
1112023/10/15yyyy/mm/dd
11220231015yyyymmdd
1022023.10.15yyyy.mm.dd
10110/15/2023mm/dd/yyyy (美式)
10315/10/2023dd/mm/yyyy (歐式)
10415.10.2023dd.mm.yyyy
10515-10-2023dd-mm-yyyy
10615 10 2023dd mon yyyy
107Oct 15, 2023Mon dd, yyyy
10814:30:00hh:mi:ss
11414:30:00.123hh:mi:ss.mmm

去分隔符技巧:REPLACE(REPLACE(REPLACE(CONVERT(VARCHAR, GETDATE(), 120), '-', ''), ' ', ''), ':', '') → 20231015143000

間隔參數 完整對照表

間隔縮寫說明範圍
YearYY, YYYY年1753-9999
QuarterQQ, Q季1-4
MonthMM, M月1-12
DayOfYearDY, Y年度第幾天1-366
DayDD, D日1-31
WeekdayDW, W週幾1-7 (週日=1)
WeekWK, WW年度第幾週0-51
HourHH時0-23
MinuteMI, N分0-59
SecondSS, S秒0-59
MillisecondMS毫秒0-999

進階應用:計算各類邊界日期

-- 本月第一天
SELECT DATEADD(MONTH, DATEDIFF(MONTH, 0, GETDATE()), 0);

-- 本月最後一天 23:59:59.997
SELECT DATEADD(MS, -3, DATEADD(MONTH, DATEDIFF(MONTH, 0, GETDATE())+1, 0));

-- 本周週一
SELECT DATEADD(WEEK, DATEDIFF(WEEK, 0, GETDATE()), 0);

-- 本年第一天
SELECT DATEADD(YEAR, DATEDIFF(YEAR, 0, GETDATE()), 0);

-- 當天午夜
SELECT DATEADD(DAY, DATEDIFF(DAY, 0, GETDATE()), 0);

DATEFIRST 影響週計算

SET DATEFIRST 7 (美式,週日=1) / SET DATEFIRST 1 (歐式,週一=1)。查詢目前設定:SELECT @@DATEFIRST。跨環境部署時建議在腳本開頭明確設定。

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