找出增加天数间隔的日期是否在一周内

find out if date with added interval of days lies in week

为简单起见,我有以下定义:

DECLARE @referenceDate DATETIME
SET @referenceDate = '20171123';
DECLARE @intervalDays INT
SET @intervalDays = 30
DECLARE @weekMonday DATETIME
SET @weekMonday = '20171204';
DECLARE @weekSunday DATETIME
SET @weekSunday = '20171210';

正好在这些日期发生了一些重要的事情:

@referenceDate
DATEADD(day, 1 * @intervalDays, @referenceDate);
DATEADD(day, 2 * @intervalDays, @referenceDate);
DATEADD(day, 3 * @intervalDays, @referenceDate);

等等。

我想知道这个 'something important' 是否会(也)发生在@weekMonday 和@weekSunday 之间的指定周内。

我有 SQL 服务器版本 11.0.6251.0 标准版,德语本地化。感谢您的帮助。

我不清楚你在找什么。

如果在范围内:

DECLARE @referenceDate DATETIME
SET @referenceDate = '20171123';
DECLARE @intervalDays INT
SET @intervalDays = 30
DECLARE @weekMonday DATETIME
SET @weekMonday = '20171204';
DECLARE @weekSunday DATETIME
SET @weekSunday = '20171210';

SELECT
    CASE 
        WHEN DATEADD(day, @intervalDays, @referenceDate) BETWEEN @weekMonday AND @weekSunday 
            THEN @intervalDays
        WHEN DATEADD(day, @intervalDays + 30, @referenceDate) BETWEEN @weekMonday AND @weekSunday 
            THEN @intervalDays + 30 
        ELSE 0 
    END AS [IsReferenceDatePlusIntervalDaysWithinTheDateRange]

距离范围还有多少天:

SELECT DATEDIFF(day, @referenceDate, @weekMonday) AS [NumberOfDaysBetweenReferenceDateToWeekMonday]

我找到了这个模数的解决方案:

IF (DATEDIFF(day, @referenceDate, @weekMonday) % @intervalDays = 0 OR
    DATEDIFF(day, @referenceDate, DATEADD(day, 1, @weekMonday)) % @intervalDays = 0 OR
    DATEDIFF(day, @referenceDate, DATEADD(day, 2, @weekMonday)) % @intervalDays = 0 OR
    DATEDIFF(day, @referenceDate, DATEADD(day, 3, @weekMonday)) % @intervalDays = 0 OR
    DATEDIFF(day, @referenceDate, DATEADD(day, 4, @weekMonday)) % @intervalDays = 0 OR
    DATEDIFF(day, @referenceDate, DATEADD(day, 5, @weekMonday)) % @intervalDays = 0 OR
    DATEDIFF(day, @referenceDate, DATEADD(day, 6, @weekMonday)) % @intervalDays = 0)
   SELECT @monday AS found

也许有人知道如何进一步简化它?谢谢