12.000 son alrededor de 8 días y 8 horas. Eso por lo pronto. Para qué alguien quiere calcular eso, es para mí un misterio, sin mirar todo el sistema.
En cuanto a una función que te devuelva una diferencia de 30 segundos, es de lo más simple, cuando lees con cuidado y atención el manual de referencia: Usa TIMESTAMPDIFF().
DATE_ADD, por más que tolere usar DATETIMEs, es una función que apunta a
fechas, no fechas y horas. Al operar con fracciones de dias genera conversiones implícitas de fecha a fecha y hora, pero eso puede tener resultados inesperados cuando no se tiene cuidado respecto a los parámetros usados.
La idea es, usando lo que dices:
O bien:
En todo caso, sería mejor que postearas el código de la función que te causa problemas. Es más sencillo darte consejos con cosas reales.