SQL - 前几天(周六和周日除外)

时间:2017-10-19 17:05:52

标签: c# sql-server

我想在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

1 个答案:

答案 0 :(得分:1)

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

对于linq我可以编写这个函数:

    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));
    }

抱歉我的英语不好。 =)