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

SQL 技巧:依已知年月計算該月天數

     編輯:關於SqlServer

利用日期函數組合,無需查閱行事曆即可計算指定年月的天數:

DECLARE @iDays INT
DECLARE @dt VARCHAR(50)
SET @dt = @Year + '-' + @Month + '-01'
SELECT @iDays = DAY(
  DATEADD(d, -DAY(DATEADD(m, 1, CONVERT(DATETIME, @dt))),
             DATEADD(m, 1, CONVERT(DATETIME, @dt)))
)
PRINT @iDays

邏輯解析

  1. @dt 組成該月第一天 (YYYY-MM-01)
  2. DATEADD(m, 1, ...) 取得下月第一天
  3. DAY(...) 取得下月第一天的「日」數值 (1~31)
  4. DATEADD(d, -該日數, 下月第一天) 退回上月最後一天
  5. DAY(...) 取得上月最後一天的日數 = 該月天數

等效簡化寫法 (SQL Server 2012+)

SELECT DAY(EOMONTH(DATEFROMPARTS(@Year, @Month, 1)))

應用場景

  • 動態產生日期維度表
  • 月結報表自動計算區間
  • 排程作業依月份天數分配配額

此技巧相容 SQL Server 2000 以上版本,無需額外函數即可內嵌於預存程序或批次腳本中。

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