如何确定SQL Server中一个月中的天数?

我需要确定SQL Server中给定日期的月份中的天数。

有内置功能吗?如果没有,我应该使用什么作为用户定义的函数?


小怪兽爱吃肉
浏览 600回答 3
3回答

缥缈止盈

您可以在指定月份的第一天使用以下命令:datediff(day, @date, dateadd(month, 1, @date))要使它适用于每个日期:datediff(day, dateadd(day, 1-day(@date), @date),              dateadd(month, 1, dateadd(day, 1-day(@date), @date)))

肥皂起泡泡

在SQL Server 2012中,可以使用EOMONTH(Transact-SQL)来获取月份的最后一天,然后可以使用DAY(Transact-SQL)来获取月份中的天数。DECLARE @ADate DATETIMESET @ADate = GETDATE()SELECT DAY(EOMONTH(@ADate)) AS DaysInMonth

慕侠2389804

最优雅的解决方案:适用于任何@DATEDAY(DATEADD(DD,-1,DATEADD(MM,DATEDIFF(MM,-1,@DATE),0)))将其扔到函数中或直接内联使用。这将回答原始问题,而其他答案中没有所有多余的垃圾。来自其他答案的日期示例:SELECT DAY(DATEADD(DD,-1,DATEADD(MM,DATEDIFF(MM,-1,'1/31/2009'),0))) 返回31SELECT DAY(DATEADD(DD,-1,DATEADD(MM,DATEDIFF(MM,-1,'2404-feb-15'),0))) 返回29SELECT DAY(DATEADD(DD,-1,DATEADD(MM,DATEDIFF(MM,-1,'2011-12-22'),0))) 返回31
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

SQL Server