【问题标题】:Based on a Variable Start Date + Days Interval, I need to find the next date after the current day基于可变开始日期+天间隔,我需要找到当天之后的下一个日期
【发布时间】:2020-05-03 12:12:58
【问题描述】:

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

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

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

【问题讨论】:

  • 请用您正在使用的数据库标记您的问题。日期函数是高度特定于供应商的。
  • 我认为您需要样本数据、所需结果、适当的数据库标签和解释。为什么anchor_date + @x * interval '1 day'(或等效的)不起作用?
  • 解决方案(假设甚至有一个)将是特定于 RDBMS 的。请告诉我们您使用的数据库。
  • 对不起大家我在 SQL 2008 R2 上,没有笑声。

标签: sql sql-server tsql date sql-server-2008


【解决方案1】:

考虑:

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) 的天数。

Demo on DB Fiddle

【讨论】:

  • 太棒了!谢谢@GMB!我无法投票,因为我还需要 4 分。
  • @MichaelJamwant:欢迎!你不能投票,但你可以accept the answer
猜你喜欢
  • 1970-01-01
  • 2023-03-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-01-19
  • 2019-01-02
  • 2022-01-18
相关资源
最近更新 更多