Ответ, заданный Джоном Ву, в то время как правильный для положительных значений, не даст правильных результатов для отрицательных значений. Я отрегулировал свой ответ, чтобы учесть это.
SET @deci = -123.77;
SELECT SIGN(@deci)* FLOOR(ABS(@deci)) Degrees,
FLOOR((ABS(@deci) - (FLOOR(ABS(@deci)))) * 60) Minutes,
((ABS(@deci) - (FLOOR(ABS(@deci)))) * 60 -
FLOOR((ABS(@deci) - (FLOOR(ABS(@deci)))) * 60)) * 60 SECONDS