有个请假表,例如里面字段是“开始日期” “结束日期” “用户ID”“请假天数”(这个请假天数是添加数据的时候自动把周末去掉了,如果包含周末不算请假天数),我要统计一个员工一段时间内(例如2011-02-16-----2011-03-15)的请假天数怎么统计?

解决方案 »

  1.   

    例如里面字段是“开始日期” “结束日期” “用户ID”“请假天数” 这个“请假天数”字段不合理吧,应该说是某一天是否请假吧,你可以设置请假为1,不请假为0.
     "select sum(请假天数) from table where date>=date1 and date<=date2";
      

  2.   


    "可以添加一个字段请假为1,不请假为0"   ++
    $sql = "select 请假天数 from table where date>=date1 and date<=date2 and user_id=$用户ID ";
      

  3.   

    如果通用php算的话:1.不考虑其它法定节假日
    2.假定end一定大于startint Days(start, end)
    {
      if(end < start)
      {
        //结束日期不能小于开始日期
        return -1;
      }
      int Interval = (end - start + 1) / 7 * 2; //一周7天中的5天是工作日
      int Ext = (end - start + 1) % 7; //多出来了几天
      for(i=1;i<=Ext;i++)
      {
        if(date("N", start + i) < 6) //如果这天是工作日,加1
        {
          Interval++;
        }
      }
      return Interval;
    }3.可能不对,欢迎讨论
      

  4.   

    补充:  int Interval = (end - start + 1) / 7 * 2; //一周7天中的5天是工作日
    改为
      int Interval = (end - start + 1) / 7 * 5; //一周7天中的5天是工作日