Ver Mensaje Individual
  #11 (permalink)  
Antiguo 20/04/2011, 09:18
leonardo_josue
Colaborador
 
Fecha de Ingreso: enero-2007
Ubicación: México
Mensajes: 2.097
Antigüedad: 18 años
Puntos: 447
Respuesta: Hora en SQL Server

Hola de nuevo azuer:

Estoy seguro que algunos de nosotros también han comenzado a desesperarse, pues no aplicas nada de lo que tratamos de explicarte. Tal pareciera que estás esperando una respuesta sólo para copiar y pegar y que funcione tal y como lo necesitas. Eso difícilmente va a suceder, la mayoría de las veces vas a tener que hacer algún tipo de adecuación del código que aquí te ponemos para aplicarlo a tu problema real. Ya te había comentado que el formato de los datos para presentarlos al usuario debes hacerlo en el ULTIMO SELECT O SELECT EXTERNO (o tal como lo comentó el compañero Iislas en la capa del Cliente), pero parece que no terminas de entender cómo hacer esto. A partir de la última consulta que pones:

Código SQL:
Ver original
  1. SELECT T.*,CONVERT( VARCHAR(8), Salida - Entrada, 108) Horas
  2. FROM(
  3. SELECT FolioSae,alNombre +' '+ alApPat +' '+ alApMat Nombre,
  4. fecha, dbo.FormatDateTime(Hora,'HH:MM:SS 24') ENTRADA,
  5. (SELECT Hora FROM ServSocChequeo
  6. WHERE IdEvento =2 AND Fecha=ssc.fecha AND idalumn=ssc.idalumn) SALIDA
  7. FROM dbo.ServSocChequeo ssc INNER JOIN dbo.ServSocAlDatosPersonales ssdp
  8. ON (ssdp.idalumn=ssc.idalumn) WHERE IdEvento =1
  9. ) AS T

dices que FECHA y SALIDA no tienen el formato que quieres, PUES ENTONCES APLICA DICHO FORMATO EN EL SELECT EXTERNO:

Código SQL:
Ver original
  1. SELECT
  2. T.Nombre,
  3. CONVERT(VARCHAR(10), T.fecha, 103) fecha, --> formato dd/mm/yyyy
  4. CONVERT(VARCHAR(10), T.ENTRADA, 108) ENTRADA, --> formato hh24:mi:ss
  5. CONVERT(VARCHAR(10), T.SALIDA, 108) SALIDA, --> formato hh24:mi:ss
  6. CONVERT( VARCHAR(8), T.SALIDA - T.ENTRADA, 108) Horas --> formato hh24:mi:ss
  7. FROM(
  8. SELECT FolioSae,alNombre +' '+ alApPat +' '+ alApMat Nombre,
  9. fecha, Hora ENTRADA,
  10. (SELECT Hora FROM ServSocChequeo
  11. WHERE IdEvento =2 AND Fecha=ssc.fecha AND idalumn=ssc.idalumn) SALIDA
  12. FROM dbo.ServSocChequeo ssc INNER JOIN dbo.ServSocAlDatosPersonales ssdp
  13. ON (ssdp.idalumn=ssc.idalumn) WHERE IdEvento =1
  14. ) AS T

Puedes observar que en el select interno NO SE APLICA NINGUNA CONVERSIÓN, porque no es necesario. Si de plano esto no te ayuda, creo que será conveniente que busques ayuda en algún otro foro o que algún otro forista trate de ayudarte, pues no encuentro otra manera de explicarme.

Saludos
Leo.