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

contar cantidad de domigo

Estas en el tema de contar cantidad de domigo en el foro de Mysql en Foros del Web. Hola nuevamente miren tengo una consulta a la que quiero agregar un campo "imaginario" contando la cantidad de domingo en el mes en un rango ...
  #1 (permalink)  
Antiguo 29/02/2012, 07:56
 
Fecha de Ingreso: febrero-2012
Mensajes: 40
Antigüedad: 12 años, 2 meses
Puntos: 0
Pregunta contar cantidad de domigo

Hola nuevamente miren tengo una consulta a la que quiero agregar un campo "imaginario" contando la cantidad de domingo en el mes en un rango de fechas... por ejemplo mi consulta es la siguente:

Código MySQL:
Ver original
  1. solicitud_postulante.id_solicitud AS Id_Solicitud,
  2. usuaria.nombre AS Usuaria,
  3. planta.nombre AS Planta,
  4. CONCAT(postulantes.apell_pater, ' ', postulantes.apell_materno, ' ', postulantes.nombres) AS Nombre_Completo,
  5. postulantes.rut AS Rut,
  6. solicitud_trabajador.fecha_inicio AS Fecha_Inicio,
  7. solicitud_trabajador.fecha_termino AS Fecha_Termino,
  8. oficio.nombre AS Cargo,
  9. solicitud_justifica.descripcion AS Justificacion,
  10. solicitud_trabajador.nom_trab_reemplazado AS Nom_Trab_Reemplazado,
  11. area.nombre AS Area,
  12. area_solicitante.nombre AS Solicitante,
  13. planta_oficio.renta AS Renta
  14. FROM solicitud_postulante
  15. INNER JOIN postulantes ON solicitud_postulante.id_postulante = postulantes.id_postulante
  16. INNER JOIN solicitud_trabajador ON solicitud_postulante.id_solicitud = solicitud_trabajador.id_solicitud
  17. INNER JOIN usuaria ON solicitud_trabajador.id_usuaria = usuaria.id
  18. INNER JOIN planta ON solicitud_trabajador.id_planta = planta.id
  19. INNER JOIN oficio ON solicitud_trabajador.id_prof = oficio.id
  20. INNER JOIN solicitud_justifica ON solicitud_trabajador.id_justifica = solicitud_justifica.id_justifica
  21. INNER JOIN area ON solicitud_trabajador.id_area = area.id
  22. INNER JOIN area_solicitante ON solicitud_trabajador.solicitante = area_solicitante.id_area_sol
  23. INNER JOIN planta_oficio ON solicitud_trabajador.id_planta = planta_oficio.id

la que me muestra estos datos....
http://imageshack.us/photo/my-images/189/consult.png/

para ello encontré este cálculo:

Código MySQL:
Ver original
  1. select truncate((datediff(STR_TO_DATE('[COLOR="red"]20090130[/COLOR]', '%Y%m%d'),
  2.                           STR_TO_DATE('[COLOR="Red"]20090102[/COLOR]', '%Y%m%d'))
  3.        - Weekday(date_add(STR_TO_DATE('[COLOR="red"]20090130[/COLOR]', '%Y%m%d'),
  4.           interval(-2 + 1)day)) + 7) / 7, 0) num_domingo;

en los espacios rojos quiero obviamente poner las fechas de inicio y termino para calcular los domingo entre ese rango de fechas... es posible? he intentado poner las fechas pero no lo puedo lograr.... y adicionalmente me muestre el campo de esta forma:

http://imageshack.us/photo/my-images/43/consult.png/
  #2 (permalink)  
Antiguo 01/03/2012, 12:11
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años, 1 mes
Puntos: 574
Respuesta: contar cantidad de domigo

Código MySQL:
Ver original
  1. solicitud_postulante.id_solicitud AS Id_Solicitud,
  2. usuaria.nombre AS Usuaria,
  3. planta.nombre AS Planta,
  4. CONCAT(postulantes.apell_pater, ' ', postulantes.apell_materno, ' ', postulantes.nombres) AS Nombre_Completo,
  5. postulantes.rut AS Rut,
  6. solicitud_trabajador.fecha_inicio AS Fecha_Inicio,
  7. solicitud_trabajador.fecha_termino AS Fecha_Termino,
  8. oficio.nombre AS Cargo,
  9. solicitud_justifica.descripcion AS Justificacion,
  10. solicitud_trabajador.nom_trab_reemplazado AS Nom_Trab_Reemplazado,
  11. area.nombre AS Area,
  12. area_solicitante.nombre AS Solicitante,
  13. planta_oficio.renta AS Renta,
  14. TRUNCATE((DATEDIFF(STR_TO_DATE('20090130', '%Y%m%d'),
  15.                           STR_TO_DATE('20090102', '%Y%m%d'))
  16.        - WEEKDAY(DATE_ADD(STR_TO_DATE('20090130', '%Y%m%d'),
  17.           INTERVAL(-2 + 1)DAY)) + 7) / 7, 0) num_domingo
  18. FROM solicitud_postulante
  19. INNER JOIN postulantes ON solicitud_postulante.id_postulante = postulantes.id_postulante
  20. INNER JOIN solicitud_trabajador ON solicitud_postulante.id_solicitud = solicitud_trabajador.id_solicitud
  21. INNER JOIN usuaria ON solicitud_trabajador.id_usuaria = usuaria.id
  22. INNER JOIN planta ON solicitud_trabajador.id_planta = planta.id
  23. INNER JOIN oficio ON solicitud_trabajador.id_prof = oficio.id
  24. INNER JOIN solicitud_justifica ON solicitud_trabajador.id_justifica = solicitud_justifica.id_justifica
  25. INNER JOIN area ON solicitud_trabajador.id_area = area.id
  26. INNER JOIN area_solicitante ON solicitud_trabajador.solicitante = area_solicitante.id_area_sol
  27. INNER JOIN planta_oficio ON solicitud_trabajador.id_planta = planta_oficio.id

No se te entiende... pero eso dice 4 domingos... (recuerda la coma del final de la linea 14)

Si vas a usar los campos solicitud_trabajador.fecha_inicio y solicitud_trabajador.fecha_termino y estos tienen formato de fecha (DATE) luego te sobra STR_TO_DATE(....)

Código MySQL:
Ver original
  1. TRUNCATE((DATEDIFF(solicitud_trabajador.fecha_termino,
  2.                           solicitud_trabajador.fecha_inicio)
  3.        - WEEKDAY(DATE_ADD(solicitud_trabajador.fecha_termino,
  4.           INTERVAL(-2 + 1)DAY)) + 7) / 7, 0) num_domingo
__________________
Quim
--------------------------------------------------
Ayudar a ayudar es una buena práctica!!! Y da buenos resultados.
  #3 (permalink)  
Antiguo 02/03/2012, 07:03
 
Fecha de Ingreso: febrero-2012
Mensajes: 40
Antigüedad: 12 años, 2 meses
Puntos: 0
Respuesta: contar cantidad de domigo

Muchas gracias por más que intenté de ponerlo con esos campos entremedio no me funcionaba =S se agradece mucho!!! ahora anda perfecto!!!!

Saludos.

Etiquetas: cantidad, join, select, campos
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.
Respuesta




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