首页 > 解决方案 > 基于可变开始日期+天间隔,我需要找到当天之后的下一个日期

问题描述

我有一个锚日期,例如。01-01-2020,这是一个变量。我也有几天的间隔,例如。7天,这也是一个变量。我需要在当前日期或之后获取下一个日期,这是锚定日期之后的整数个间隔。

现在是 2020 年 1 月 16 日。我预计的日期是 2020 年 1 月 22 日。

结果日期将在 SELECT 语句中作为一列。select 语句提供变量。

标签: sqlsql-servertsqldatesql-server-2008

解决方案


考虑:

dateadd(
    day,
    7 - datediff(day, '2020-01-01', cast(getdate() as date)) % 7,
    cast(getdate() as date)
)

锚定日期在哪里,'2020-01-01'并且7是间隔。

这通过获取当前日期和锚点之间的天数差异来工作:对于今天 2020-01-16,结果是 15。然后我们得到这个值的模 7(即 1),然后从 7 中减去它(得到 6 ),它为我们提供了我们需要添加到当前日期以获得预期值 (2020-01-22) 的天数。

DB Fiddle 上的演示


推荐阅读