SQL - 获取几天前的日期(不包括星期六和星期日)



我想从 2017 年 10 月 20 日开始获取 7 天前的日期,不包括周末。如果2017年10月20日是星期五,那么7天前意味着2017年10月11日。该问题的查询情况如何?

期望的结果是:

2017-10-19
2017-10-18
2017-10-17
2017-10-16
2017-10-13
2017-10-12
2017-10-11

您可以尝试检查所需的时间段,了解它的排除天数。例如,我们需要从今天到7天前的前一天。X(找到的日期)= Y(现在的日期)- Z(7 天,以前的时间段)。然后我们尝试每天检查这个周期 Z [从 12/10 到 19/10]。结果,我们找到了 2 天,并从 Y 天开始减少。

对于 linq I,我们可以编写此函数:

    private DateTime GetBeforeDateExcludeWeekends(DateTime FromDate, int Period)
    {
        DateTime tillBeforeDate = FromDate.Subtract(TimeSpan.FromDays(Period));
        var weekendDayCnt = 
            Enumerable.Range(0, (FromDate - tillBeforeDate).Days + 1).Select(d => tillBeforeDate.AddDays(d))
            .Where(day => day.DayOfWeek == DayOfWeek.Saturday || day.DayOfWeek == DayOfWeek.Sunday)
            .Count();
        return FromDate.Subtract(TimeSpan.FromDays(Period + weekendDayCnt));
    }

对不起,我的英语不好。 =)

最新更新