Puoi risolvere sia in mysql che in php.
Pero' la differenza non potra' essere una data ma una serie di valori (n. giorni, n.ore ecc.) In pratica in entrambi i casi (php mysql) devi ottenere la differenza in secondi e poi ricalcolare.
in php esiste il problema dei numeri dei mesi e dei giorni ad una cifra relativi a 8 e 9. In pratica non puoi mettere 08 09 perche' per definizione i numeri inizianti per 0 sono in notazione ottale. Quindi 08 09 darebbero un errore di calcolo. Bisogna mettere la data senza gli zeri davanti.
Ti metto 2 righe in php che puoi facilmente trasformare in funzione.
Codice PHP:
$data_1 = '2005-9-25 15:37:00';
$data_2 = '2005-9-30 10:11:00';
list($data1,$orario1) = explode(' ',$data_1);
list($anno1,$mese1,$giorno1) = explode('-',$data1);
list($ora1,$min1,$sec1) = explode(':',$orario1);
list($data2,$orario2) = explode(' ',$data_2);
list($anno2,$mese2,$giorno2) = explode('-',$data2);
list($ora2,$min2,$sec2) = explode(':',$orario2);
$diff=mktime($ora2, $min2,$sec2, $mese2,$giorno2,$anno2) - mktime($ora1,$min1,$sec1, $mese1,$giorno1,$anno1);
$giorni = floor($diff / (60*60*24));
$diff1 = floor($diff % (60*60*24));
$ore = floor($diff1 / (60*60)) ;
$diff2 = floor($diff1 % (60*60)) ;
$min = floor($diff2 / (60)) ;
$sec = $diff2 % 60;
echo "$giorno1-$mese1-$anno1 $ora1:$min1:$sec1
";
echo "$giorno2-$mese2-$anno2 $ora2:$min2:$sec2
";
echo "
N. giorni $giorni $ore:$min:$sec
";
e' facilmente comprensibile. Se hai bisogno di chiarimenti son qua.
Per mysql avrei bisogno di sapere quale "misura" ti serve... giorni oppure ore perche' cambia parecchio la query.