--建立用户表
CREATE TABLE TABLE1([ID] INT IDENTITY,BEGINTIME DATETIME,ENDTIME DATETIME)
INSERT INTO TABLE1
SELECT '2001-1-1','2001-12-1' UNION ALL
SELECT '2002-1-1','2002-12-1' UNION ALL
SELECT '2004-1-1','2005-12-1' UNION ALL
SELECT '2006-1-1','2006-12-1' UNION ALL
SELECT '2008-1-1','2008-12-1'
go
--建立函数
CREATE FUNCTION F_GETDATE(@BEGINTIME DATETIME,@ENDTIME DATETIME)
RETURNS @T TABLE(BEGINTIME DATETIME,ENDTIME DATETIME)
AS
BEGIN
WHILE (@BEGINTIME < @ENDTIME)
BEGIN
DECLARE @TEMP TABLE(BEGINTIME DATETIME,ENDTIME DATETIME)
INSERT INTO @TEMP SELECT @BEGINTIME,DATEADD(MONTH,11,@BEGINTIME)
SELECT @BEGINTIME = DATEADD(YEAR,1,@BEGINTIME)
END;
INSERT INTO @T
SELECT * FROM @TEMP WHERE BEGINTIME NOT IN(SELECT BEGINTIME FROM TABLE1)
RETURN
END
GO
--查询
SELECT * FROM DBO.F_GETDATE('2001-1-1','2006-12-1')