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.