2017-10-19 16 views
0

私は20日前から2017年10月20日に日付を取得したい、週末を除外する。 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)); 
    } 

私の悪い英語のため申し訳ありません。 =)

関連する問題