vero...quindi penso che bisogna distinguere i casi e fare degli if.

Se giorno_da e giorno_a coincidono allora basta fare solo un DATEDIFF; ma se data_a è maggiore di data_da allora occorre fare un altro calcolo. quindi, in PHP (supponendo che mantieni nello stesso campo data e ora):

Codice PHP:
// preleva la data
if (substr($data_da010) == substr($data_a010))
  
$query "SELECT DATEDIFF('".substr($data_a010)."', '".substr($data_da010)."') AS diff";
else {
  
// questa query calcola quante ore mancano alla fine dell'orario di lavoro giornaliero
  // supponendo che si finsica di alvorare alle 17
  
$query "SELECT DATEDIFF('".substr($data_da010)." 17:00:00', '".$data_da."') AS primaDiff";
  
// esegui la query e avrai il risultato nella variabile, ad esempio, $primaDiff
  // ora esegui la seconda query, che calcola la differenza in ore fra l'orario di entrata e l'inizio del lavoro alle 9
  
$query "SELECT DATEDIFF('2008-12-17 ".substr($data_a11)."', '2008-12-17 09:00:00') AS secondaDiff";
  
// esegui la query e avrai il risultato nella variabile, ad esempio, $secondaDiff
  // sottrae le due variabili epr avere le ore e i minuti
  
$query "SELECT SUBTIME($secondaDiff$primaDiff) AS diff";
  
// esegui la query e avrai il risultato nella variabile, ad esempio, $diff

più o meno penso dovrebeb bastare..mi auguro!!!