none
Somar horas e minutos coluna Time(7) RRS feed

  • Pergunta

  • Pessoal,

    Estou quebrando a cabeça em um calculo de horas em um sistema que gerencia horas extras e faltas, tenho no banco salvo a quantidade de horas e minutos em uma coluna Time(7).

    E estou usando a seguinte querye para fazer a somatória:

    SELECT        DP.TeacherHour.ClassificationID, DP.TeacherHour.Year, DP.TeacherHour.Month, 
    DP.TeacherHour.SubstituteBaseID, DP.TeacherHour.SubstituteID,
    (SELECT [Professor] FROM [DP].[v_Teachers] WHERE cod_funcionario = DP.TeacherHour.SubstituteID) AS Teacher,
    (SELECT Description FROM DP.TeacherBase WHERE TeacherBaseID = DP.TeacherHour.SubstituteBaseID )AS Base,
     SUM(DP.TeacherHour.Classes) AS Classes, 
     (SELECT CASE
     WHEN
      SUM(DATEDIFF(MINUTE, '0:00:00', DP.TeacherHour.Intime)) IS NULL THEN  '0'
      ELSE SUM(DATEDIFF(MINUTE, '0:00:00', DP.TeacherHour.Intime)) END ) /60 AS Intime,
     --SUM(Dp.TeacherHour.Intime) AS inTime,
     (SELECT code FROM [DP].[TeacherBasePay] WHERE TeacherBaseID = DP.TeacherHour.SubstituteBaseID AND TypeHourID = DP.TeacherHour.Type ) AS Verba,
      DP.TeacherHour.Type
    FROM            DP.TeacherHour INNER JOIN
                             DP.TeacherHourAproved ON DP.TeacherHour.SiteID = DP.TeacherHourAproved.SiteID AND DP.TeacherHour.ClassificationID = DP.TeacherHourAproved.ClassificationID AND 
                             DP.TeacherHour.TeacherHourID = DP.TeacherHourAproved.TeacherHourID
    WHERE        (DP.TeacherHourAproved.Aproved = 1)
    GROUP BY DP.TeacherHour.ClassificationID, DP.TeacherHour.Year, 
    DP.TeacherHour.Month, DP.TeacherHour.SubstituteBaseID,  DP.TeacherHour.SubstituteID, DP.TeacherHour.Type
    HAVING        (DP.TeacherHour.Year = 2019) AND (DP.TeacherHour.Month = 09) AND (DP.TeacherHour.Type = 2)
    

    Desataco o calculo das horas:

     (SELECT CASE
     WHEN
      SUM(DATEDIFF(MINUTE, '0:00:00', DP.TeacherHour.Intime)) IS NULL THEN  '0'
      ELSE SUM(DATEDIFF(MINUTE, '0:00:00', DP.TeacherHour.Intime)) END ) /60 AS Intime,

    Esta calculando somente as horas e os minutos quebrados não está me trazendo, exemplo(58 horas e 30 minutos seria 58:30 ele esta me retornando apenas 58)

    Devo estar fazendo algo errado no calculo ou na conversão, alguém tem alguma ideia onde estou errando?

    Obrigado.


    Moizés Cerqueira | MCP / MCTS SQL SERVER

    segunda-feira, 16 de setembro de 2019 18:24

Respostas

Todas as Respostas