Ver Mensaje Individual
  #9 (permalink)  
Antiguo 08/02/2016, 17:12
rbczgz
 
Fecha de Ingreso: noviembre-2003
Ubicación: Zaragoza, España
Mensajes: 1.257
Antigüedad: 20 años, 5 meses
Puntos: 154
Respuesta: dias entre fechas

Cita:
Iniciado por hhs Ver Mensaje
El post original donde se soluciono un problema similar: http://www.forosdelweb.com/f18/calcu...emana-1144175/
Gracias hhs por localizar el tema, así puedo poner los créditos a quien le corresponden

Hola isiunicornio,

Por si al final decides hacerlo mediante PHP te dejo la función modificada para lo que quieres:

Código PHP:
Ver original
  1. $query = "SELECT fechaaprob FROM tabla";
  2. $consulta = mysql_query($query);
  3.  
  4. while ($fila = mysql_fetch_assoc($consulta)) {
  5.     $fecha = $fila['fechaaprob'];
  6. }
  7.  
  8. $fecha = explode(" ", $fecha);
  9. $fecha = $fecha[0];
  10.  
  11.     $fecha_inicio = $fecha; // En formato aaaa-mm-dd que es como viene de la BD
  12.     $fecha_fin = date('Y-m-d'); // En formato aaaa-mm-dd que es como viene de la BD
  13.      
  14.     //Esta función devuelve los días laborables entre dos fechas pasadas como parámetros
  15.      
  16.     function diasLaborables($fecha_inicio, $fecha_fin) {
  17.              //El tercer parámetro que recibe esta función está tratado como un array, por lo que debe serlo
  18.              $fecha_comienzo = new DateTime( $fecha_inicio );    //inicia
  19.              $fecha_finalizacion = new DateTime( $fecha_fin );    //termina
  20.              
  21.              $intervalo = new DateInterval('P1D');    // intervalo de un día
  22.      
  23.              $rango = new DatePeriod($fecha_comienzo, $intervalo ,$fecha_finalizacion); //creamos rango de fechas
  24.              
  25.              $dias_laborables = array();
  26.                       foreach($rango as $date){
  27.                           //Se considera el fin de semana y los festivos como no hábiles
  28.                           if($date->format("N") <6)
  29.                               $dias_laborables[] = $date->format("Y-m-d"); // se asignan fechas validas, devueltas en formato aaaa-mm-dd
  30.                       }
  31.              return count($dias_laborables);
  32.     }
  33.      
  34.     //Uso: diasLaborables($fecha_inicio, $fecha_fin);
  35.     //Devuelve un número que son los días laborables entre las dos fechas dadas

Espero que te sirva.