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

Calcular numero de días a partir de un rango de fechas

Estas en el tema de Calcular numero de días a partir de un rango de fechas en el foro de Mysql en Foros del Web. Hola señores del foro, estoy intentando calcular el numero de días a partir de un rango de fechas según los datos ingresados pero no se ...
  #1 (permalink)  
Antiguo 02/12/2014, 18:43
Avatar de hdionicio  
Fecha de Ingreso: enero-2012
Ubicación: Huánuco, Perú
Mensajes: 10
Antigüedad: 12 años, 3 meses
Puntos: 0
Mensaje Calcular numero de días a partir de un rango de fechas

Hola señores del foro, estoy intentando calcular el numero de días a partir de un rango de fechas según los datos ingresados pero no se me ocurre como.
Si alguien pudiera ayudar les agradeceré encarecidamente.

Gracias.

Lo que deseo es por ejemplo calcular los días trabajados de un rango de fechas DATE MAX - DATE MIN pero sin tener que estar ingresando fecha inicio y fecha final sino dinamicamente.

Código MySQL:
Ver original
  1. -- ----------------------------
  2. -- Table structure for control_diario
  3. -- ----------------------------
  4. DROP TABLE IF EXISTS `control_diario`;
  5. CREATE TABLE `control_diario` (
  6.   `equ_codigo` varchar(10) NOT NULL,
  7.   `con_fecha` date NOT NULL,
  8.   `tur_codigo` varchar(2) NOT NULL,
  9.   `pro_codigo` varchar(5) NOT NULL,
  10.   `ope_codigo` varchar(10) DEFAULT NULL,
  11.   `con_observ` text,
  12.   `con_numero_parte` varchar(50) DEFAULT NULL,
  13.   `con_correlativo` varchar(50) DEFAULT NULL,
  14.   `con_hi` decimal(12,2) NOT NULL,
  15.   `con_hf` decimal(12,2) NOT NULL,
  16.   `con_hor_efectivas` varchar(5) NOT NULL,
  17.   `hor_codigo` varchar(5) NOT NULL,
  18.   `col_codigo` varchar(10) DEFAULT NULL,
  19.   `ope_nombre` varchar(150) NOT NULL,
  20.   `col_nombre` varchar(150) NOT NULL,
  21.   PRIMARY KEY (`equ_codigo`,`con_fecha`,`tur_codigo`,`pro_codigo`),
  22.   KEY `fk_control_diario_turno1` (`tur_codigo`),
  23.   KEY `fk_control_diario_periodo1` (`con_hor_efectivas`),
  24.   KEY `fk_control_diario_horometro1` (`hor_codigo`),
  25.   KEY `fk_control_diario_employed1` (`col_codigo`)
  26.  
  27. -- ----------------------------
  28. -- Records of control_diario
  29. -- ----------------------------
  30. INSERT INTO `control_diario` VALUES ('01140803', '2013-03-27', 'd', 'PROIN', null, null, '20', '38196', '6732.50', '6738.40', '', 'a', null, '', '');
  31. INSERT INTO `control_diario` VALUES ('01140803', '2013-03-29', 'd', 'PROIN', null, null, '63', '38197', '6738.40', '6741.80', '', 'a', null, '', '');
  32. INSERT INTO `control_diario` VALUES ('01140803', '2013-03-30', 'd', 'PROIN', null, null, '22', '6211', '6741.80', '6747.70', '', 'a', null, '', '');
  33. INSERT INTO `control_diario` VALUES ('01140803', '2013-03-31', 'd', 'PROIN', null, null, '37', '38200', '6747.90', '6748.30', '', 'a', null, '', '');
  34. INSERT INTO `control_diario` VALUES ('01140803', '2013-04-05', 'd', 'PROIN', null, null, '11', '38199', '6748.70', '6752.80', '', 'a', null, '', '');
  35. INSERT INTO `control_diario` VALUES ('01140803', '2013-04-06', 'd', 'PROIN', null, null, '121', '36956', '6752.80', '6755.10', '', 'a', null, '', '');
  36. INSERT INTO `control_diario` VALUES ('01140803', '2013-04-07', 'd', 'PROIN', null, null, '39', '36957', '6755.10', '6759.20', '', 'a', null, '', '');
  37. INSERT INTO `control_diario` VALUES ('01140803', '2013-04-08', 'd', 'PROIN', null, null, '116', '36958', '6765.10', '6765.40', '', 'a', null, '', '');
  38. INSERT INTO `control_diario` VALUES ('01140803', '2013-04-09', 'd', 'PROIN', null, null, '21', '39250', '6766.40', '6766.40', '', 'a', null, '', '');
  39. INSERT INTO `control_diario` VALUES ('01140803', '2013-04-10', 'd', 'PROIN', null, null, '98', '31960', '6766.40', '6766.40', '', 'a', null, '', '');
  40. INSERT INTO `control_diario` VALUES ('01140803', '2013-04-12', 'd', 'PROIN', null, null, '15', '36959', '6766.10', '6770.30', '', 'a', null, '', '');
  41. INSERT INTO `control_diario` VALUES ('01140803', '2013-04-13', 'd', 'PROIN', null, null, '5', '36960', '6770.30', '6774.00', '', 'a', null, '', '');
  42. INSERT INTO `control_diario` VALUES ('01140803', '2013-04-14', 'd', 'PROIN', null, null, '62', '36961', '6774.00', '6778.70', '', 'a', null, '', '');
  43. INSERT INTO `control_diario` VALUES ('01140803', '2013-04-15', 'd', 'PROIN', null, null, '107', '36962', '6778.70', '6784.30', '', 'a', null, '', '');
  44. INSERT INTO `control_diario` VALUES ('01140803', '2013-04-16', 'd', 'PROIN', null, null, '78', '36963', '6787.80', '6796.10', '', 'a', null, '', '');
  45. INSERT INTO `control_diario` VALUES ('01140803', '2013-04-17', 'd', 'PROIN', null, null, '88', '36964', '6796.10', '6803.10', '', 'a', null, '', '');
  46. INSERT INTO `control_diario` VALUES ('01140803', '2013-04-19', 'd', 'PROIN', null, null, '91', '36965', '6803.10', '6809.60', '', 'a', null, '', '');
  47. INSERT INTO `control_diario` VALUES ('01140803', '2013-04-20', 'd', 'PROIN', null, null, '42', '36968', '6809.60', '6814.80', '', 'a', null, '', '');
  48. INSERT INTO `control_diario` VALUES ('01140803', '2013-04-21', 'd', 'PROIN', null, null, '49', '36971', '6814.80', '6820.10', '', 'a', null, '', '');
  49. INSERT INTO `control_diario` VALUES ('01140803', '2013-04-22', 'd', 'PROIN', null, null, '31', '36972', '6820.10', '6820.10', '', 'a', null, '', '');
  50. INSERT INTO `control_diario` VALUES ('01140803', '2013-04-23', 'd', 'PROIN', null, null, '33', '36973', '6820.10', '6822.00', '', 'a', null, '', '');
  51. INSERT INTO `control_diario` VALUES ('01140803', '2013-04-24', 'd', 'PROIN', null, null, '38', '36974', '6822.00', '6828.70', '', 'a', null, '', '');
  52. INSERT INTO `control_diario` VALUES ('01140803', '2013-07-22', 'd', 'PROIN', null, ' ', '23564', '1', '150.00', '158.00', '1', 'a', null, '', '');

por ejemplo para calcular la diferencia de horometros uso este código.

Código MySQL:
Ver original
  1. COALESCE((SELECT sum(c.con_hf)-sum(c.con_hi)  
  2.     from control_diario c  
  3.     where c.equ_codigo=e.equ_codigo  
  4.     and c.pro_codigo=pro
  5.     and c.con_fecha
  6.     between finicio and ffin ),0) AS HrsHorometro,

Para calcular las horas trabajadas uso este código.

Código MySQL:
Ver original
  1. COALESCE((SELECT sum(t.hor_tra_horas)
  2.     from horas_trabajadas t  
  3.     where t.equ_codigo=e.equ_codigo  
  4.     and t.pro_codigo=pro
  5.     and t.con_fecha
  6.     between finicio and ffin),0) AS HrsTrab,

Del mismo modo quisiera calcular los días trabajados de un rango de fechas. (pro, finicio, ffin) son parámetros para un procedure.

Etiquetas: fecha, operacion, procedure, select
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 03:35.