2017-10-19 169 views
0

我想从2017年10月20日前7天获取日期,排除周末。如果2017年10月20日是星期五,7天前是指2017年10月11日。如何解决该问题?SQL - 获取多个日期天数(排除周六和周日)

期望的结果是:

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

请告诉我们你自己累了什么..这不是代码服务提供商网站... – MethodMan

+1

查看DateTime.AddDays方法和DateTime.DayOfWeek属性。有了这个和一个循环,你应该能够产生期望的结果。 – juharr

回答

1

你可以尝试检查它如何排除天有需要的时期。 例如,我们需要从今天到7天前的一天。 X(发现日期)= Y(现在的日期) - Z(7天,前期)。 然后我们试着每天检查这个时间段[从12/10到19/10]。结果我们发现了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)); 
    } 

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

相关问题