There are occasions when one may want to calculate months with more than 28 days in SQL Server. The challenge that may arise is that a generic T-SQL function does not exist for this computation. Nonetheless, the ability to perform such computation is made possible through the proper use of date functions in T-SQL, combined with the ability to leverage cursors or a looping construct within a stored procedure.
In this post, we shall be focusing on how to count the number of months in SQL Server with a duration of more than 28 days. We shall start by creating a cursor to loop through each year and month, and then use a combination of several date functions to achieve the desired outcome.
首先,我们创建一个游标来循环每一年和每一个月:
— Declare Cursor declare c1 cursor for select distinct year(date) as [year], month(date) as [month] from tablename order by [year], [month]
接下来,我们使用dateadd函数来计算每个月的总天数:
declare @days int, @month date set @month = dateadd(mm, 1, datefromparts(@year, @month, 1)) set @days = datediff(dd, datefromparts(@year, @month, 1), @month)
随后,我们通过比较总天数是否大于28来判断每个月是否包含天数大于28天:
if @days > 28 begin — Increment the count set @longmonthcount = @longmonthcount + 1 end
最后,我们返回结果:
— Return result select @longmonthcount count
因此,以上代码是如何用游标和dateadd函数统计超过28天的月份。这种方法可以确保实现这种统计。
香港服务器首选树叶云,2H2G首月10元开通。
树叶云(shuyeidc.com)提供简单好用,价格厚道的香港/美国云服务器和独立服务器。IDC+ISP+ICP资质。ARIN和APNIC会员。成熟技术团队15年行业经验。
文章来源网络,作者:运维,如若转载,请注明出处:https://shuyeidc.com/wp/239831.html<

