Code Library

DAX · UDF

Time.TotalTimeToStr

Converte uma duração em dias em texto HH:MM:SS, sem limite de 24 horas.

Categoria: Data e horaTipo: UDFVersão: v1.1.0Fonte: Paulo André Jesus — OfficeTuningAtualizado em: 25/09/2026
Documentação completa na Function Library →

Sintaxe

Time.TotalTimeToStr ( pTimeField )

Argumentos

NomeTipoObrigatórioDescrição
pTimeFieldDATETIME VALSimDuração em dias (1 = 24 h) ou um horário.

Retorno

Texto

Código completo

DEFINE
    /// Converte uma duração (fração de dia) em texto HH:MM:SS, sem limite de 24 horas.
    /// @param {DATETIME} pTimeField - Duração em dias (1 = 24 h), ou um horário.
    /// @returns Texto "HH:MM:SS", ou BLANK.
    FUNCTION Time.TotalTimeToStr =
        ( pTimeField : DATETIME VAL ) =>
        -- Arredonda para segundos inteiros antes de separar horas, minutos e segundos
        VAR vSegundos = ROUND ( pTimeField * 86400, 0 )
        VAR vHoras = INT ( vSegundos / 3600 )
        VAR vMinutos = INT ( MOD ( vSegundos, 3600 ) / 60 )
        VAR vSeg = MOD ( vSegundos, 60 )
        RETURN
            IF (
                ISBLANK ( pTimeField ),
                BLANK (),
                FORMAT ( vHoras, "00" ) & ":" & FORMAT ( vMinutos, "00" ) & ":" & FORMAT ( vSeg, "00" )
            )

EVALUATE
{ Time.TotalTimeToStr ( 1.25 ), Time.TotalTimeToStr ( TIME ( 1, 30, 15 ) ) }  // "30:00:00" · "01:30:15"

Exemplos

Tempo Total = Time.TotalTimeToStr ( SUM ( 'TabFatAtendimento'[Duração] ) )

EVALUATE { Time.TotalTimeToStr ( 1.25 ) }
// "30:00:00"

Dicas e observações

💡 Arredonda para segundos inteiros antes de separar horas, minutos e segundos: evita 00:59:59 em vez de 01:00:00. ⚠️ O resultado é texto: não soma nem ordena como número. Para ordenar, use a duração original.