实现这个功能,先参考下面几篇博文《https://www.cnblogs.com/insus/archive/2011/04/22/2025019.html
《https://www.cnblogs.com/insus/archive/2011/09/10/2173028.html
《https://www.cnblogs.com/insus/archive/2011/09/11/2173612.html
可以写一个Table-valued Functions:
SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO -- ============================================= -- Author: Insus.NET -- Create date: 2019-05-09 -- Update date: 2019-05-09 -- Description: 获取指定月份所有日期 -- ============================================= CREATE FUNCTION [dbo].[tvf_DaysOfMonth] ( @InputDate DATETIME ) RETURNS @dump TABLE ( [Date] DATETIME ) AS BEGIN DECLARE @firstDayOfMonth DATETIME = DATEADD(MONTH,DATEDIFF(MONTH,0,@InputDate),0) --获取所在月份第一天日期 DECLARE @daysOfMonth INT = DAY(DATEADD(DAY,-1, DATEADD(MONTH,1,@firstDayOfMonth))) --获取所在月份的天数 INSERT INTO @dump ([Date]) VALUES(@firstDayOfMonth) --把第一天插入表中。 DECLARE @d INT = 1 WHILE @d < @daysOfMonth BEGIN INSERT INTO @dump ([Date]) VALUES(@firstDayOfMonth + @d) SET @d = @d + 1 END RETURN END