2017-10-19 12 views
0

Je veux obtenir la date il y a 7 jours à partir du 20 octobre 2017, exclure la fin de semaine. Si le 20 octobre 2017 est vendredi, il y a 7 jours signifie le 11 octobre 2017. Comment est la requête pour ce problème?SQL - Obtenir plusieurs date jours (excluant samedi et dimanche)

Le résultat souhaité est:

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

s'il vous plaît nous montrer ce que vous avez fatigué par vous-même .. ce n'est pas un site de fournisseur de services de code ... – MethodMan

+1

Vérifiez la méthode 'DateTime.AddDays' et la propriété' DateTime.DayOfWeek'. Avec cela et une boucle, vous devriez être en mesure de générer les résultats souhaités. – juharr

Répondre

1

Vous pouvez essayer de vérifier la période nécessaire sur la façon dont il a exclu jours. Par exemple, nous avons besoin de prendre une période d'aujourd'hui à jour avant 7 jours. X (date de découverte) = Y (date maintenant) - Z (7 jours, période antérieure). Ensuite, nous essayons de vérifier cette période Z jour par jour [du 12/10 au 19/10]. En résultat, nous avons trouvé 2 jours et le diminuer à partir du jour Y.

Pour LINQ je nous pouvons écrire cette fonction:

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

Désolé pour mon mauvais anglais. =)