Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

Как да получите 14 дни преди определената дата, избягвайки празници

Бих изчислил датата с помощта на функция като тази по-долу (която използвам)

public static DateTime AddBusinessDays(DateTime date, int days)
 {
    if (days == 0) return date;

   if (date.DayOfWeek == DayOfWeek.Saturday)
   {
    date = date.AddDays(2);
    days -= 1;
  }
  else if (date.DayOfWeek == DayOfWeek.Sunday)
  {
    date = date.AddDays(1);
    days -= 1;
  } 



 date = date.AddDays(days / 5 * 7);
 int extraDays = days % 5;

 if ((int)date.DayOfWeek + extraDays > 5)
 {
    extraDays += 2;
 }

int extraDaysForHolidays =-1;
//Load holidays from DB into list
List<DateTime> dates = GetHolidays();

while(extraDaysForHolidays !=0)
{

 var days =  dates.Where(x => x >= date  && x <= date.AddDays(extraDays)).Count;
 extraDaysForHolidays =days;
 extraDays+=days;  
}


return date.AddDays(extraDays);

}

Не съм тествал секцията ast, която прави празниците



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как да разберете дали изчислената колона е детерминистична в SQL Server

  2. Опитвам се да създам съхранена процедура за създаване на потребител за вход и база данни?

  3. Как да свържете база данни на Access към SQL Server в Access 2016

  4. Обобщена таблица на SQL Server с множество агрегати на колони

  5. Ред, разделен със запетая, с клауза Group By