Compañer@ mksp:
te estás complicando la existencia, en primer lugar no es conveniente que pongas tanto código repetitivo en tus consultas, pues esto afecta en gran cantidad el rendimiento de tu consulta, es por eso que en mi post te digo:
Cita: sería conveniente que programes esto en una función Smallint_a_Datetime, para poder aplicarlo en los tres campos.
En cuanto a los cálculos, si tus campos ya están como date no deberías tener problemas, la conversión la hace SQL Server, aquí está el ejemplo con los datos que pones y la salida correcta,
Código SQL:
Ver originalDECLARE @TuTabla TABLE (u_timeviaje datetime, u_horafinaten datetime, u_horalleg datetime)
INSERT INTO @TuTabla VALUES ('1900-01-01 00:40', '1900-01-01 12:40', '1900-01-01 12:20');
INSERT INTO @TuTabla VALUES ('1900-01-01 08:00', '1900-01-01 18:00', '1900-01-01 12:17');
SELECT
CONVERT(VARCHAR, u_timeviaje, 108) u_timeviaje,
CONVERT(VARCHAR, u_horafinaten, 108) u_horafinaten,
CONVERT(VARCHAR, u_horalleg, 108) u_horalleg,
CONVERT(VARCHAR, (u_timeviaje+(u_horafinaten-u_horalleg)), 108) tiempoactividad
FROM @TuTabla T;
Código:
u_timeviaje u_horafinaten u_horalleg tiempoactividad
------------------------------ ------------------------------ ------------------------------ ------------------------------
00:40:00 12:40:00 12:20:00 01:00:00
08:00:00 18:00:00 12:17:00 13:43:00
TRATA DE IMPLEMENTAR la función para convertir a fecha, olvídate del CASE, la función que te pongo yo sirve para cualquiera de los casos de puedas tener en tu tabla, agregando 1,2 o 3 ceros según se necesite.
Saludos
Leo