Resultado da diferença datetime não aparece no banco MYSQL PHP

Olá pessoal tive pesquisando mas nada, próximo a resolução do meu problema, por isso resolvi dar uma passada por aqui, sendo breve. Ao inserir as informações, preenche o formulário na web normalmente e os gráficos,… com exceção daquele que aponta “total_horas” INDICA null .
As informações com “total_horas” não é preenchido no BD porem na WEB sim. Aí vão meus questionamentos: Porque as infos são preenchidas na web e no BD não. ( ); Haveria por exe: setar um default na tabela sql, para as datas inicio e fim retornando a diferença?.. evitando esta falha no BD?

O que pretendo? Que o resultado apareça em “total_horas” no DB. Alguém pode me ajudar?

<?php 

                   include 'PieChart/basedado.php';

                   
                   $con = Database::connect();
                   
                  $sql =  "SELECT `id`,`site`,`inicio`,`fim`,`equipamento`,`total`, timediff(`fim`, `inicio`) AS `total_horas` FROM `programacao` WHERE 1 ";

                 

//$sql = 'SELECT * FROM programacao ORDER BY id DESC';
				   

                   foreach ($con->query($sql) as $row) {
                            echo '<tr>';
                            echo '<td>'. $row['site'] . '</td>';
                            echo '<td>'. date ('d-m-Y H:i:s ', strtotime($row['inicio'])) . '</td>';
                            echo '<td>'. date ('d-m-Y H:i:s ', strtotime($row['fim']))  . '</td>';
                            echo '<td>'. $row['equipamento'] . '</td>';
                            echo '<td>'. $row['total'] . '</td>';
                            echo '<td>'. $row['total_horas'] . '</td>';
                         
                           
                            echo '<td width=250>';
                            echo '<a class="btn btn-warning" href="PieChart/read.php?id='.$row['id'].'"><i class="fa fa-th-list" aria-hidden="true"></i></a>';
                            echo '&nbsp;';
                            echo '<a class="btn btn-success" href="PieChart/update.php?id='.$row['id'].'"><i class="fa fa-pencil" aria-hidden="true"></i></a>';
                            echo '&nbsp;';
                            echo '<a class="btn btn-danger" href="PieChart/delete.php?id='.$row['id'].'"><i class="fa fa-trash" aria-hidden="true"></i></a>';
                            echo '</td>';
                            echo '</tr>';


                            

                   }
                   Database::disconnect();
                  ?>`

realiza esse select na mão.

ve se da algum warning. as vezes tem algum detalhe que escapa a gente…

Blz peczenyj.

Já fiz e retorna os valores, ai ta o prob… quando eu forço dá certo, mas o objetivo do php é que seja dinâmico o que não está acontecendo, mas fiz um vídeo https://youtu.be/EruuMih3WWY da uma consultada. outro https://www.youtube.com/watch?v=MwZHYP8FsfA

timediff pode retornar NULL se um dos campos for null. veja se é o que acontece

também existe mum limite maximo, algo menor que 1000 horas.

não sei mais como ajudar