Son varios los errores.
Por lo pronto, toda esta parte está mal:
En todo caso, debería ser así:
por otro lado, y primeramente, es totalmente incorrecto usar un VARCHAR como parametro de entrada, si la fecha la recibes como DATETIME o TIME.
En lugar de eso deberías usar:
Con lo que te ahorrarías pasos.
Finalmente, la propia construcción de esa función es innecesaria, ya que puedes obtener el mismo resultado usando funciones nativas:
Por ejemplo:
Código MySQL:
Ver original+------------+
| diferencia |
+------------+
| 10:49:38 |
+------------+
Y si usas un datetime, puedes hacelo con dos funciones, que te devolverá:
Código MySQL:
Ver original+------------+
| diferencia |
+------------+
| 287:49:10 |
+------------+