MySQL - Sumar columnas de un un campo datetime vertiéndolos a segundo

 
Vista:
sin imagen de perfil
Val: 1
Ha aumentado su posición en 95 puestos en MySQL (en relación al último mes)
Gráfica de MySQL

Sumar columnas de un un campo datetime vertiéndolos a segundo

Publicado por Juan Carlos (1 intervención) el 24/05/2019 13:26:52
SOS !!! Hola amigos, esto me trae por la calle de la amargura y no soy capaz de sacarlo. Ya estoy embotado y no se me ocurre nada, así que por favor ayuda!!!

Tengo dos tablas "entradas_salidas" y "pausas".

De la tabla "entradas_salidas" los campos "Fecha_entrada_hora" y "Fecha_salida_hora" (ambos datetime) los convierto a segundos para a la Fecha_salida_hora restarle la Fecha_entrada_hora. De esta forma me muestra hh:mm:ss y así se las horas, minutos y segundos que ha trabajado.

De la tabla "pausas", igual que la anterior, tengo los campos "Fecha_inicia_pausa_hora" y "Fecha_cancela_pausa_hora" para saber cuantas horas, minutos y segundos ha descansado

Lo que quiero hacer es que me sume todos los segundos de los campos Fecha_entrada_hora" y "Fecha_salida_hora" para luego restarle los segundos de los campos "Fecha_inicia_pausa_hora" y "Fecha_cancela_pausa_hora" de la tabla "pausas" (pueden haber varias pausas en un mismo día) y que en la parte de abajo de la tabla me aparezca también el resultado final tal y como muestro en la imagen que he adjuntado.

Este es mí código completo para que por favor alguien me eche una mano. Gracias mil por adelantado.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
<div class="body table-responsive">
 
			<!-- Inicio tabla-->
           <table class="table table-striped table-colored" style="font-size: 11px;">
                <thead>
                  <tr>
                    <th>Día</th>
                    <th>Entrada</th>
                    <th>Salida</th>
                    <th>Pausas</th>
                    <th>Horas</th>
                  </tr>
                </thead>
 
                 <tbody>
 
 <?php // EXTRAIGO LOS HORARIOS DE ENTRADA Y SALIDA DEL EMPLEADO
$Id_empleado = $row_EMPLEADO_LOGUEADO['Id_empleado'];
 
mysqli_select_db($conexion,$database_db);
$query_FICHA_ENTRADA_SALIDA = "SELECT Id_entrada_salida, Id_empleado, Fecha_entrada_hora, Fecha_salida_hora FROM entradas_salidas WHERE Id_empleado = '$Id_empleado' ORDER BY Id_entrada_salida DESC";
$FICHA_ENTRADA_SALIDA = mysqli_query($conexion,$query_FICHA_ENTRADA_SALIDA);
$row_FICHA_ENTRADA_SALIDA = mysqli_fetch_assoc($FICHA_ENTRADA_SALIDA);
$totalRows_FICHA_ENTRADA_SALIDA = mysqli_num_rows($FICHA_ENTRADA_SALIDA);
mysqli_free_result($FICHA_ENTRADA_SALIDA);
?>
 
 
 <?php $FICHA_ENTRADA_SALIDA = mysqli_query($conexion,$query_FICHA_ENTRADA_SALIDA); /////////////// INICIO REPETIR REGION FICHA_ENTRADA_SALIDA ////////////
while($row_FICHA_ENTRADA_SALIDA=mysqli_fetch_array($FICHA_ENTRADA_SALIDA)){ ?>
 
 
<?php
$Fecha_entrada_hora = $row_FICHA_ENTRADA_SALIDA['Fecha_entrada_hora'];//Hora de entrada
$Fecha_salida_hora = $row_FICHA_ENTRADA_SALIDA['Fecha_salida_hora'];// Hora de salida
 
$Segundos_trabajados = strtotime($Fecha_salida_hora) - strtotime($Fecha_entrada_hora);//Las paso a segundos para calculas las horas, minutos y segundos?>
 
<?php $Segundos_trabajados = $Segundos_trabajados; ///////// A ESTO LE RESTO MAS ABAJO LOS MINUTOS DE PAUSA
                $horas_trabajadas = floor($Segundos_trabajados/ 3600);
                $minutos_trabajados = floor(($Segundos_trabajados - ($horas_trabajadas * 3600)) / 60);
                $Horas_trabajadas = $Segundos_trabajados - ($horas_trabajadas * 3600) - ($minutos_trabajados * 60);?>
 
 
 
 
<?php //EXTRAIGO LOS HORARIOS DEL INICIO Y DEL FINAL DE LAS PAUSAS QUE HA HECHO
$Id_empleado = $row_EMPLEADO_LOGUEADO['Id_empleado'];
$Id_entrada_salida = $row_FICHA_ENTRADA_SALIDA['Id_entrada_salida'];
 
mysqli_select_db($conexion,$database_db);
$query_FICHA_INICIO_FINAL_PAUSAS = "SELECT Id_pausa, Id_entrada_salida, Id_empleado, Fecha_inicia_pausa_hora, Fecha_cancela_pausa_hora FROM pausas WHERE Id_empleado = '$Id_empleado' AND Id_entrada_salida = '$Id_entrada_salida' ORDER BY Id_pausa DESC";
$FICHA_INICIO_FINAL_PAUSAS = mysqli_query($conexion,$query_FICHA_INICIO_FINAL_PAUSAS);
$row_FICHA_INICIO_FINAL_PAUSAS = mysqli_fetch_assoc($FICHA_INICIO_FINAL_PAUSAS);
$totalRows_FICHA_INICIO_FINAL_PAUSAS = mysqli_num_rows($FICHA_INICIO_FINAL_PAUSAS);
mysqli_free_result($FICHA_INICIO_FINAL_PAUSAS);
?>
 
 
<?php
$Fecha_inicia_pausa_hora = $row_FICHA_INICIO_FINAL_PAUSAS['Fecha_inicia_pausa_hora'];//Hora de entrada
$Fecha_cancela_pausa_hora = $row_FICHA_INICIO_FINAL_PAUSAS['Fecha_cancela_pausa_hora'];// Hora de salida
 
$Segundos_descansados = strtotime($Fecha_cancela_pausa_hora) - strtotime($Fecha_inicia_pausa_hora);//Las paso a segundos para calculas las horas, minutos y segundos?>
 
<?php $Segundos_descansados = $Segundos_descansados;
                $horas = floor($Segundos_descansados/ 3600);
                $minutos = floor(($Segundos_descansados - ($horas * 3600)) / 60);
                $Segundos_descansados = $Segundos_descansados - ($horas * 3600) - ($minutos * 60);
 
                $Horas_descansadas = $horas . ':' . $minutos . ":" . $Segundos_descansados;?>
 
 
 
 
 
      <tr>
        <td><?php echo $row_FICHA_ENTRADA_SALIDA['Dia_entrada']?> <?php echo $Día= substr($row_FICHA_ENTRADA_SALIDA['Fecha_entrada_hora'], 8, 2);// Para que muestre solo el día?></td>
        <td><?php echo $Hora_entrada = substr($row_FICHA_ENTRADA_SALIDA['Fecha_entrada_hora'], 11, 8);// Para que muestre solo la hora día ?></td><!--Hora entrada-->
        <td><?php echo $Hora_salida = substr($row_FICHA_ENTRADA_SALIDA['Fecha_salida_hora'], 11, 8);// Para que muestre solo la hora día ?></td><!--Hora salida-->
        <td><?php echo $Horas_descansadas;?></td><!-- tiempo de psusas-->
        <td>  </td><!-- horas trabajadas en este dia-->
     </tr>
 
   	  <?php
	   } ///////////////////////////////////////////////////////////////////// FINALIZO REPETIR REGION FICHA_ENTRADA_SALIDA ///////////////////////////////
	   ?>
 
 
 
 
                </tbody>
 
 
              </table>
        <!-- Fin tabla-->
			</div>
DUDAS
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder