根据时间间隔(月/季)查找下一个日期

时间:2019-11-10 16:47:43

标签: sql sql-server

CREATE TABLE @Temp(
    Date datetime,
    Flag bit)

@Temp table as data from 01-04-2019  to  31-04-2020  (366 records) and flag=0

DECLARE startdate date='12-04-2019', interval  int  =1 OR 3

预期结果:如果间隔为1个月,则基于开始日期,标记将更新为下面的记录,其余为0

    date         flag
    01-04-2019    0
    .             0
    .             0
    12-05-2019    1
    .             0
    .             0  
    12-06-2019    1
    .             0
    .             0
    12-07-2019    1
    ..            0
    31-04-2020    0

如果间隔为3个月,则将标志更新为1个季度

      date        flag
    01-04-2019    0
    .             0
    .             0
    12-07-2019    1
    .             0
    .             0  
    12-10-2019    1
    .             0
    .             0
    12-01-2020    1
    .             0
    31-04-2020    0

我坚持尝试获取结果。我正在使用SQL Server 2017。

1 个答案:

答案 0 :(得分:2)

花些时间让我意识到您的日期格式与我以前使用的格式不同。

我将使用通用表表达式而不是游标。除此之外,请考虑任何给定日期与开始日期之间的月份差异。取该差异的模(这就是'%'符号的含义)。如果它为0,则您的间隔已被击中,因此请激活您的标志。

collatz19.txt