Aprenda a dominar as fórmulas de datas no Notion! Neste guia completo, você descobrirá como calcular intervalos entre datas, dias úteis e muito mais usando as poderosas fórmulas do Notion.
Se você já se perguntou como automatizar cálculos de prazos, cronogramas ou períodos de projetos no Notion, este artigo é para você. Vamos explorar desde conceitos básicos até fórmulas avançadas, todas testadas e prontas para uso.
Neste artigo você vai aprender:
- Como calcular dias entre duas datas no Notion
- Fórmulas para cálculo de dias úteis
- Como adicionar dias úteis a uma data específica
Seja você um gerente de projetos, profissional de RH ou entusiasta do Notion, estas fórmulas vão ajudar você a automatizar suas tarefas diárias e tornar seu workspace mais eficiente.
No Notion você pode representar datas de começo e fim, de duas formas diferentes:
- Usando 1 Campo: Mesmo que só tenha um campo do tipo Data em uma determinada página, é possível clicar no slider “End Date” ou “Data Final” para poder transforma uma data comum em um intervalo de datas, como mostra a figura abaixo.

- Usando 2 Campos: Talvez a forma mais tradicional de representar Datas de Início e Data de Fim, usa-se dois campos do tipo Data.

Dias Corridos entre duas Datas
Dias entre duas Datas: Você pode modelar datas de início de duas formas. Tendo um campo Data de Início e outro Data de Fim, ou um único campo do tipo Data que tem início e fim. Na tabela abaixo, mostro como calcular dias entre as datas. Dependendo de como você modelar suas bases de dados, a forma de aplicar os cálculos de data variam levemente.
Na tabela abaixo, mostro como calcular dias entre as datas. Importante notar que essa fórmula não leva em conta dias úteis. Apenas para calcula os dias entre as datas.
Para ver como fazer o cálculo de dias úteis entre duas datas veja abaixo.
Fórmula para cálculo de diferença entre datas com dois campos
dateBetween(prop("Data Fim"),prop("Data Inicio"),"days")
Fórmula para cálculo de diferença entre datas com um campo
dateBetween(dateEnd(prop("Data Completa")),dateStart(prop("Data Completa")),"days")
Dias Úteis entre duas Datas
Dias Úteis entre duas Datas: A tabela de exemplo abaixo mostra a fórmula para calcular os dias úteis entre duas datas. Nesse exemplo a fórmula desconta os sábados e domingos entre duas datas específicas. Para cada linha temos os seguintes campos:
- Cenário: nome do cenário para validação da fórmula de dias úteis
- Data Início e Data Fim: as datas que usaremos para calcular a diferença em dias úteis
- Dias Corridos: a quantidade de dias corridos entre as duas datas
- Dia Início e Dia Fim: o número do dia da semana (1 = segunda, 2 = terça,…. 7 = domingo). Dia Início pega o dia de início do intervalo e o Dia Fim representa o dia de fim do intervalo.
Para o teste unitário de cada linha, temos 2 colunas.
- Dias Uteis Esperado: Tem a resposta esperada que a fórmula de cálculo de dias úteis deveria retornar.
- Fórmula OK?: esse campo adota um valor ✅ para indicar que o teste passou, ou ❕ para indicar que o teste falhou. O teste compara o resultado da fórmula com o valor esperado.
Para a fórmula de cálculo de dias úteis, temos uma coluna.
- Dias Úteis: fórmula documentada com comentários que calcula a quantidade de dias úteis (i.e. de segunda a sexta) entre a Data Início e a Data Fim.
Essa fórmula tem o mesmo funcionamento da =NETWORKDAYS() que é conhecida por usuários de Excel e de Google Planilhas.
Fórmula comentada para cálculo de dias úteis entre duas datas. Ela poderia ser ainda mais otimizada, mas eu optei por deixar dessa forma para também manter a uma melhor capacidade de leitura e entendimento. Do ponto de vista de Complexidade Ciclomática, essa fórmula tem baixa Ordem O(C), uma vez que não tem loops e usa apenas cálculos matemáticos, resultando em ótima performance. Essa fórmula é uma adaptação para o Notion dessa equação encontrada no Stackoverflow.
lets( /* número de dias corridos entre a data de início e a de fim */ numDays, dateBetween(dateEnd(prop("Data")),dateStart(prop("Data")),"days"), /* número de semanas inteiras entre as duas datas */ numWeeks, floor(numDays / 7), /* calcula o resto da divisão por 7 para representar os dias que sobram das semanas completas*/ numDaysLeft, numDays % 7, /* calcula os dias de descanso */ numHolidays, ifs( /* se segunda-feira */ day(dateStart(prop("Data"))) == 1, numWeeks * 2 + if(numDaysLeft > 4,min(numDaysLeft - 4,2),0), /* se terça-feira */ day(dateStart(prop("Data"))) == 2, numWeeks * 2 + if(numDaysLeft > 3,min(numDaysLeft - 3,2),0), /* se quarta-feira */ day(dateStart(prop("Data"))) == 3, numWeeks * 2 + if(numDaysLeft > 2,min(numDaysLeft - 2,2),0), /* se quinta-feira */ day(dateStart(prop("Data"))) == 4, numWeeks * 2 + if(numDaysLeft > 1,min(numDaysLeft - 1,2),0), /* se sexta-feira */ day(dateStart(prop("Data"))) == 5, numWeeks * 2 + if(numDaysLeft > 0,min(numDaysLeft,2),0), /* se sábado */ day(dateStart(prop("Data"))) == 6, 1 + numWeeks * 2 + if(numDaysLeft > 0,1,0), /* se domingo */ day(dateStart(prop("Data"))) == 7, 1 + numWeeks * 2 + if(numDaysLeft > 5,1,0), /* else - nunca deve chegar aqui, mas precisa da instrução na estrutura do ifs() */ 0 ), numDays - numHolidays + 1 )
Uma versão reduzida, porém menos legível dessa mesma fórmula é a seguinte:
lets( /* número de dias corridos entre a data de início e a de fim */ numDays, dateBetween(dateEnd(prop("Data")),dateStart(prop("Data")),"days"), /* número de semanas inteiras entre as duas datas */ numWeeks, floor(numDays / 7), /* calcula o resto da divisão por 7 para representar os dias que sobram das semanas completas*/ numDaysLeft, numDays % 7, /* dia da semana em que inicia o inteårvalo Segunda = 1, Domingo = 7 */ dow, day(dateStart(prop("Data"))), /* calcula os dias de descanso */ numHolidays, ifs( /* se segunda-feira a sexta-feira */ [1,2,3,4,5].contains(dow), numWeeks * 2 + if(numDaysLeft > (5 - dow),min(numDaysLeft - (5 - dow),2),0), /* se sábado */ day(dateStart(prop("Data"))) == 6, 1 + numWeeks * 2 + if(numDaysLeft > 0,1,0), /* se domingo */ day(dateStart(prop("Data"))) == 7, 1 + numWeeks * 2 + if(numDaysLeft > 5,1,0), /* else - nunca deve chegar aqui, mas precisa da instrução na estrutura do ifs() */ 0 ), numDays - numHolidays + 1 )
Dias Úteis à partir de uma Data
Dias Úteis à partir de uma Data: À partir de dois parâmetros, sendo uma data inicial e uma quantidade de dias úteis, a fórmula calcula uma data final que representa a quantidade de dias úteis decorridos desde a data apontada. Ex. Se eu somar 10 dias úteis ao dia 16/09/2024, que dia eu tenho?
- Cenário: descrição/nome do cenário para validação da fórmula de dias úteis
- Data: representa a Data em cima da qual queremos somar a quantidade de dias úteis
- Dias Uteis a Somar: a quantidade de dias úteis a serem somados à Data informada
Para o teste unitário de cada linha, temos 2 colunas.
- Data Esperada: Tem a resposta esperada com a data que a fórmula de cálculo de dias úteis deveria retornar.
- Fórmula OK?: esse campo adota um valor ✅ para indicar que o teste passou, ou ❕ para indicar que o teste falhou. O teste compara o resultado da fórmula com o valor esperado.
Para a fórmula de cálculo de dias úteis, temos uma coluna.
- Calc Data + Dias Úteis: fórmula documentada com comentários que calcula uma nova data à partir da quantidade de dias úteis (i.e. de segunda a sexta) somada a uma data fornecida.
Fórmula comentada para calcular uma data futura à partir de uma data inicial e somando dias úteis
lets( /* quantas semanas inteiras existem de Dias úteis, ou seja, 5 dias. (seg a sex) */ semanas_inteiras, max(0,floor((prop("Dias Uteis a Somar") - 1) / 5)), /* quantos dias uteis "sobram" sem formar uma semana inteira; o -1 significa que o dia atual é considerado sempre = de segunda a sexta, são 5 dias uteis.*/ dias_uteis_sobrando,prop("Dias Uteis a Somar") - floor((prop("Dias Uteis a Somar") - 1) / 5) * 5 -1, /* "move" a data inicial somando a quantidade de semanas inteiras */ date_semanas_inteiras,dateAdd(prop("Data"),semanas_inteiras,"weeks"), /* se a data para a qual movemos a data inicial é sabado ou domingo, joga para segunda */ dia,day(date_semanas_inteiras), offset_inicio_fds,if(contains([6,7],dia),8-dia,0), date_offset_inicio_fds,dateAdd(date_semanas_inteiras,offset_inicio_fds,"days"), /* guarda o dia da semana para a data que foi movida */ dia_offset_inicio_fds,day(date_offset_inicio_fds), /* soma os dias sobrando à essa nova data ajustada apos somar as semanas */ date_offset_sobrando,dateAdd(date_offset_inicio_fds,dias_uteis_sobrando,"days"), dia_offset_sobrando,day(date_offset_sobrando), /* ajusta a suposta data final caso caia ou tenha passado por um final de semana */ offset_final, ifs( /* se essa data cair no final de semana, joga para segunda */ contains([6,7],dia_offset_sobrando), 8-dia_offset_sobrando, /* se entre uma data e outra, passou pelo fds, ajusta +2 */ dia_offset_sobrando < dia_offset_inicio_fds, 2, 0 ), final_date,dateAdd(date_offset_sobrando,offset_final,"days"), /* retorna a data final */ final_date )