Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General »

Contar periodo de dias MySql

Estas en el tema de Contar periodo de dias MySql en el foro de Bases de Datos General en Foros del Web. Hola, estoy usando DateDiff para calcular la diferencia de dias de dos campos fecha en mi tabla, pero tengo un requerimiento de que no hay ...
  #1 (permalink)  
Antiguo 17/03/2005, 09:30
Avatar de lalogrosz  
Fecha de Ingreso: mayo-2002
Ubicación: Capital Federal
Mensajes: 339
Antigüedad: 22 años
Puntos: 6
Contar periodo de dias MySql

Hola, estoy usando DateDiff para calcular la diferencia de dias de dos campos fecha en mi tabla, pero tengo un requerimiento de que no hay que tomar los fines de semana, o sea que tengo que calcular la diferencia de dias solo contando los dias habiles. Hay algo para obviar el fin de semana?

Gracias
__________________
"Vivir....solo cuesta Vida"
  #2 (permalink)  
Antiguo 17/03/2005, 10:29
Avatar de BrujoNic
Super Moderador
 
Fecha de Ingreso: noviembre-2001
Ubicación: Costa Rica/Nicaragua
Mensajes: 16.935
Antigüedad: 22 años, 6 meses
Puntos: 655
Pues intenta poniendo un where como este:

Código PHP:
SELECT *  FROM `tablaWHERE dayname(fechaNOT IT ("Saturday""Sunday"
Ese WHERE no toma en cuenta los Sábados ni Domingos.
__________________
La tecnología está para ayudarnos. No comprendo el porqué con esa ayuda, la gente escribe TAN MAL.
NO PERDAMOS NUESTRO LINDO IDIOMA ESPAÑOL
  #3 (permalink)  
Antiguo 17/03/2005, 11:31
Avatar de lalogrosz  
Fecha de Ingreso: mayo-2002
Ubicación: Capital Federal
Mensajes: 339
Antigüedad: 22 años
Puntos: 6
Si pero como lo aplico con esto?

Código PHP:
"SELECT
         DATEDIFF(reparado,alta) as alta1
FROM "
.TABLE_REPARATIONS."
        LEFT JOIN "
.TABLE_REPARATIONS_REPAIRED."
              on reparation_id = reparation_repaired_rep_id
        LEFT JOIN "
.TABLE_REPARATIONS_REMPLACED."
              on reparation_id = reparation_remp_old_id
        INNER JOIN "
.TABLE_SERVICE_SHOP."
              on reparation_diagnosis_by = service_shop_id
        INNER JOIN "
.TABLE_DATA_PRODUCTS."
              on reparation_product_model = data_products_id
WHERE (reparation_disposal = '1' OR reparation_disposal = '4') AND
           reparation_responsibility $respons 'Delphi/Famar' AND
           SUBSTRING(alta,1,7) = '$fecha'
           $query" 
Lo que esta por debajo como los JOIN no importan, pero estoy tomando la diferencia de reparado con alta y no quiero obviar las fechas que fueron dadas de alta o reparados en un fin de semana (principalmente porque no existen). Lo que quiero es que en el periodo no me cuente por ejemplo:
Alta: 2005-03-10 Reparado: 2005-03-15 Diferencia: 5
Sino, Diferencia: 3 ya que el 12 y 13 cayo fin de semana.
Espero que me haya explicado bien.

Muchas Gracias
__________________
"Vivir....solo cuesta Vida"
  #4 (permalink)  
Antiguo 17/03/2005, 17:32
Avatar de Seppo  
Fecha de Ingreso: marzo-2005
Ubicación: Buenos Aires, Argentina
Mensajes: 1.284
Antigüedad: 19 años, 2 meses
Puntos: 17
SELECT TO_DAYS(reparado)-TO_DAYS(alta)- (FLOOR((TO_DAYS(reparado)-TO_DAYS(alta))/7)*2)+1

No tiene en cuenta que reparado o alta sea un fin de semana. El último +1 es para que cuente el día de alta y el de reparado, sino cuenta uno solo de los dos.

(Hecho por "El hermano de Seppo")

Última edición por Seppo; 17/03/2005 a las 17:36
  #5 (permalink)  
Antiguo 18/03/2005, 07:22
Avatar de lalogrosz  
Fecha de Ingreso: mayo-2002
Ubicación: Capital Federal
Mensajes: 339
Antigüedad: 22 años
Puntos: 6
Sabes que me toma igual los dias del fin de semana...
No entiendo que rol hace esta parte del query porque no se cumple en todos los casos
(FLOOR((TO_DAYS(reparado)-TO_DAYS(alta))/7)*2)
__________________
"Vivir....solo cuesta Vida"
  #6 (permalink)  
Antiguo 18/03/2005, 17:12
Avatar de Seppo  
Fecha de Ingreso: marzo-2005
Ubicación: Buenos Aires, Argentina
Mensajes: 1.284
Antigüedad: 19 años, 2 meses
Puntos: 17
voy a defender a mi hermano...

la idea de ese FLOOR es contar la cantidad de semanas y restarle dos dias por cada semana...

ejemplo
desde el martes 1/3 hasta el viernes 18/3
la diferencia total de días es 17, pero en el medio hay dos fines de semana (4 dias) por lo que resta 4 con ese floor.
lo q hace eso es contar la cantidad de semanas completas que pasaron y restar dos días por cada una

edito... ahora veo q si es del 11 al 15, por ejemplo, devuelve 4 y no es así...
perdón, no puedo ayudar... pero la intención la tuve :P:P

Última edición por Seppo; 18/03/2005 a las 17:29
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Tema Cerrado




La zona horaria es GMT -6. Ahora son las 12:52.