Ver Mensaje Individual
  #5 (permalink)  
Antiguo 12/08/2011, 09:23
leonardo_josue
Colaborador
 
Fecha de Ingreso: enero-2007
Ubicación: México
Mensajes: 2.097
Antigüedad: 17 años, 4 meses
Puntos: 447
Respuesta: Campo smallint en hora

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 original
  1. DECLARE @TuTabla TABLE (u_timeviaje datetime, u_horafinaten datetime, u_horalleg datetime)
  2. INSERT INTO @TuTabla VALUES ('1900-01-01 00:40', '1900-01-01 12:40', '1900-01-01 12:20');
  3. INSERT INTO @TuTabla VALUES ('1900-01-01 08:00', '1900-01-01 18:00', '1900-01-01 12:17');
  4. SELECT
  5. CONVERT(VARCHAR, u_timeviaje, 108) u_timeviaje,
  6. CONVERT(VARCHAR, u_horafinaten, 108) u_horafinaten,
  7. CONVERT(VARCHAR, u_horalleg, 108) u_horalleg,
  8. CONVERT(VARCHAR, (u_timeviaje+(u_horafinaten-u_horalleg)), 108) tiempoactividad
  9. 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