--需求:1.历史日期不显示,今天算历史。
--需求;2.开始日期不超期,未来可超期。
SET DATEFIRST 1
DECLARE @XQ INT SET @XQ = 4
DECLARE @KSRQ VARCHAR(50) SET @KSRQ = '2020-05-29'
DECLARE @JSRQ VARCHAR(50) SET @JSRQ = '2020-06-24'
--开始日期:传参
DECLARE @KSRQ_1 DATETIME SET @KSRQ_1 = CONVERT(DATETIME,@KSRQ)
--开始日期:星期
DECLARE @KSRQ_2 DATETIME SET @KSRQ_2 = DATEADD(DAY,@XQ - DATEPART(WEEKDAY,@KSRQ_1),@KSRQ_1)
--结束日期:日期
DECLARE @JSRQ_1 DATETIME SET @JSRQ_1 = CONVERT(DATETIME,@JSRQ)
--结束日期:星期
DECLARE @JSRQ_2 DATETIME SET @JSRQ_2 = DATEADD(DAY,@XQ - DATEPART(WEEKDAY,@JSRQ_1),@JSRQ_1)
--当天日期:系统
DECLARE @TODAY DATETIME SET @TODAY = CONVERT(DATETIME,CONVERT(VARCHAR(8),GETDATE(),112))
IF(@KSRQ_1 > @JSRQ_1)
BEGIN
--错误:开始日期 > 结束日期
RETURN
END
IF(@TODAY >= @JSRQ_2)
BEGIN
--错误:系统日期 >= 结束日期(星期)
RETURN
END
IF(@TODAY >= @KSRQ_2 OR @KSRQ_1 >= @KSRQ_2)
BEGIN
--变更:系统日期 >= 开始日期(星期)
--变更:开始日期 >= 开始日期(星期)
SET @KSRQ_2 = DATEADD(DAY,7,@KSRQ_2)
END
WHILE(@KSRQ_2 <= @JSRQ_2)
BEGIN
SELECT @KSRQ_2
SET @KSRQ_2 = DATEADD(DAY,7,@KSRQ_2)
END
![]()