【问题标题】:Recurring Date Calculator SQL重复日期计算器 SQL
【发布时间】:2019-10-10 02:19:59
【问题描述】:

我希望创建一个与特定日历日期的事件相对应的循环日期计算器。每个事件都有自己的规则。 前任。对于 EVENT 规则是“每月星期二发生,开始日期为 2019 年 9 月 17 日星期二。我使用时间维度表,每个日期都填充到 2025 年。使用我在 WHERE 子句中使用的这些日期

WHERE dayname = 'tuesday' and ( DATEDIFF(DAY, '2019-09-17', Calendar_Date) % 28 ) = 0 to get monthly tuesdays. 

但是当一个月有两个 5 星期二时,我遇到了问题。 2020 年 3 月 3 日和 2020 年 3 月 31 日。需要将日期填充为 2020 年 4 月 7 日而不是 2020 年 3 月 31 日。

谁能帮忙解决?

【问题讨论】:

  • 你为什么要聪明地使用日期算术和模数?您显然有非常清晰的逻辑来查找所有星期二 - 您只需要找到每个月的 第一个 星期二。这是一个提示 - 您如何找到特定月份的值(即,calendar_date >= '20190901' 和 calendar_date

标签: sql sql-server date


【解决方案1】:

通过您的查询,您已经非常接近了。您需要做的就是然后子选择

SELECT MIN(CalendarDate) AS CalendarDate
FROM (your query goes here) AS d
GROUP BY YEAR(CalendarDate), MONTH(CalendarDate);

【讨论】:

    猜你喜欢
    • 2017-04-13
    • 2014-01-10
    • 1970-01-01
    • 1970-01-01
    • 2016-08-21
    • 2021-08-21
    • 2019-02-10
    • 2015-05-08
    • 1970-01-01
    相关资源
    最近更新 更多