Referência: Códigos de Data/Hora da Função FORMAT() (DAX)

DAX

Os códigos abaixo seguem a convenção real do DAX (Visual Basic / OLE Automation), e não a do .NET/Excel: em DAX, M/MM não significam mês, m/mm não significam minuto, e y mostra o dia do ano (1–366), não o ano. Essa troca é o erro mais fácil de cometer por reflexo para quem vem do Excel, do C# ou da propriedade "Formato" do Power BI Desktop — a armadilha das duas sintaxes está detalhada na seção 4, e a tabela corrigida, na seção 3. A referência vale especialmente para o argumento format_string da função FORMAT.

1. Por que isso importa

A função FORMAT() do DAX usa uma sintaxe de formato baseada em Visual Basic (OLE Automation) — não na sintaxe do .NET Framework que a maioria das pessoas conhece do Excel, C# ou da própria propriedade "Formato" da interface do Power BI Desktop (coluna/medida). A documentação oficial é explícita sobre isso: "The format strings supported as an argument to the DAX FORMAT function are based on the format strings used by Visual Basic (OLE Automation), not on the format strings used by the .NET Framework."

Isso cria uma armadilha real: existem duas sintaxes de formato coexistindo no Power BI, uma do lado da interface (estilo .NET) e outra do lado da função FORMAT() (estilo VB) — fácil de confundir porque as duas aparecem lado a lado o tempo todo.

2. Códigos corretos — dia, mês, semana, trimestre

CódigoExibeExemplo (25/06/2020)
dDia sem zero à esquerda (1-31)25
ddDia com zero à esquerda (01-31)25
dddAbreviação do dia da semana (localizado)Qui
ddddNome completo do dia da semana (localizado)Quinta-feira
dddddData completa no formato curto do sistema25/06/2020
ddddddData completa no formato longo do sistemaQuinta-feira, 25 de Junho de 2020
wDia da semana como número (1=domingo a 7=sábado)5
wwSemana do ano como número (1-54)26
mMês sem zero à esquerda (1-12) — vira minuto só se vier logo depois de h/hh6
mmMês com zero à esquerda (01-12) — mesma regra de contexto acima06
mmmAbreviação do mês (localizado)Jun
mmmmNome completo do mês (localizado)Junho
qTrimestre do ano (1-4)2

3. Códigos corretos — ano

CódigoExibeExemplo (25/06/2020)
yDia do ano (1-366) — não é ano!177
yyAno com 2 dígitos (00-99)20
yyyyAno com 4 dígitos (0100-9999)2020

Correção aplicada: o livro-fonte atribuía a y o significado de "último dígito do ano" e a yy "dois últimos dígitos do ano" — nenhum dos dois bate com o comportamento real. y sozinho mostra o dia do ano (conceito de calendário juliano/ordinal), não tem relação nenhuma com ano. Quem precisa do ano de 2 dígitos usa yy; quem precisa dos 4 dígitos usa yyyy — y isolado praticamente nunca é o que se quer para mostrar ano.

4. Códigos corretos — hora, minuto, segundo

CódigoExibeExemplo (13:23:45)
hHora sem zero à esquerda, 0-2313
hhHora com zero à esquerda, 0-2313
nMinuto sem zero à esquerda (0-59) — não é m!23
nnMinuto com zero à esquerda (00-59)23
sSegundo sem zero à esquerda (0-59)45
ssSegundo com zero à esquerda (00-59)45
tttttHora completa (h:mm:ss) no formato do sistema13:23:45
AM/PM, am/pm, A/P, a/pIndicador de 12h, várias capitalizaçõesPM / pm / P / p

Correção aplicada: o livro-fonte usava m/mm para minuto — isso é o padrão do .NET/Excel, não do DAX. No FORMAT() do DAX, minuto é n/nn. Usar mm onde se queria minuto na verdade produz mês.

5. A armadilha das duas sintaxes — resumo

OndeConvençãoMêsMinuto
Propriedade "Formato" da UI (coluna/medida).NETM/MM (maiúsculo)m/mm (minúsculo)
FORMAT(valor, format_string) — função DAXVB/OLE Automationm/mm (sempre minúsculo)n/nn

A regra prática: se o código está dentro dos parênteses de FORMAT(), é sintaxe VB — mês e minuto não se distinguem por maiúscula/minúscula, e minuto usa n, não m.

6. Exemplos completos corrigidos (locale pt-BR)

Expressão DAXResultado para 26/05/2025 14:07:03
FORMAT([Data], "dd/mm/yyyy", "pt-BR")26/05/2025
FORMAT([Data], "dddd, dd 'de' mmmm 'de' yyyy", "pt-BR")terça-feira, 26 de maio de 2025
FORMAT([Data], "mmm/yyyy", "pt-BR")mai/2025
FORMAT([Data], "hh:nn:ss", "pt-BR")14:07:03
FORMAT([Data], "dd/mm/yyyy hh:nn", "pt-BR")26/05/2025 14:07
FORMAT([Data], "yyyy-mm-dd", "pt-BR")2025-05-26 (padrão ISO)

Nota: o texto literal 'de' continua precisando de aspas simples para não ser interpretado como código de formato — isso já estava correto no livro-fonte e não mudou.

Nota de validação

Todos os códigos desta página foram confirmados contra learn.microsoft.com/en-us/dax/format-function-dax em 2026-08-06 — tabela oficial "Custom date/time formats", incluindo os exemplos comparativos en-US/de-DE que a própria Microsoft usa para demonstrar o comportamento. A tabela original do livro-fonte tinha 2 erros sistemáticos (mês/minuto trocados, ano/dia-do-ano trocados) que se propagavam por toda a seção de exemplos — todos corrigidos aqui.

Conhecer a trilha Power BI ao vivo