Ver Mensaje Individual
  #8 (permalink)  
Antiguo 12/08/2011, 13:56
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

Hola de nuevo mksp:

Te aseguro que "llorando" no vas a resolver tu problema, así es que evita post como el último que pones.

Dices que eres principiante, así es que lo primero que debiste hacer es leer algún manual para principiantes, la parte de las funciones y procedimientos almacenados en SQL Server y cualquier DBMS de permite desarrollar consultas muy complejas, algo que difícilmente podrás hacer con un simple SELECT.

Segundo, NUNCA ESPERES que aquí se te de la respuesta a tus tareas o trabajos y mucho menos que con un simple copiar y pegar obtengas la respuesta. La mayoría de las veces tendrás que hacer algún tipo de adecuación para que se adapte al 100% a tu realidad.

Tercero, lo que te publiqué en los dos primeros post's es prácticamente la respuesta a tu pregunta, me pregunto si al menos te tomaste un minuto para analizar y tratar de implementar la solución. Espero sinceramente que así haya sido. Ojo para la siguiente.

Ahora bien, volviendo con tu problema... Te comentaba que la parte más "compleja" podría ser la parte de convertir el smallint a datetime mediante una función, como dices ser principiante sería más o menos así:

Código SQL:
Ver original
  1. CREATE FUNCTION dbo.f_smallint_a_datetime
  2. (
  3.     @fecha_smalltime SMALLINT  
  4. )
  5. RETURNS datetime
  6. AS
  7. BEGIN
  8.   DECLARE @fecha_datetime datetime
  9.   DECLARE @fecha_varchar VARCHAR(4)
  10.   --Para rellenar a la izquierda con ceros
  11.   SET @fecha_varchar = RIGHT('0000' + CAST(@fecha_smalltime AS VARCHAR(4)), 4)
  12.   --Para convertir la cadena a datetime
  13.   SET @fecha_datetime = CONVERT(datetime, LEFT(@fecha_varchar, 2) + ':' + RIGHT(@fecha_varchar,2), 108)
  14.   RETURN @fecha_datetime
  15. END

Observa que el set @fecha_varchar y el set @fecha_datetime SON LAS MISMAS INTRUCCIONES QUE PUSE EN EL PRIMER POST, sólo cambiando el nombre de las variables.

Para ejecutarla sería así

Código SQL:
Ver original
  1. SELECT dbo.smallint_a_datetime(40);
  2.  
  3. /*
  4. fecha
  5. -----------------------
  6. 1900-01-01 00:40:00.000
  7. */

Ahora bien, SÓLO FALTARIA HACER EL CÁLCULO, invocando a esta función para los tres campos:

Código:
SELECT 
convert(varchar, aquí invocas la función, 108) u_timeviaje,
...
convert(varchar, (aquí invocas la función+(u_horafinaten-u_horalleg)), 108) tiempoactividad
FROM TuTabla
Haz el intento por obtener la consulta por tu propia cuenta, con todos los elementos que tienes podrás hacerlo, pero si continuas con problemas comenta en el post qué es lo que haz hecho, seguramente será poco lo que habrá que corregir.

Saludos
Leo.