Ir para o conteúdo

Use a Parte da Data

Guia

Caso de uso: Precisa de um Date tabela com muitas partes de data diferentes e colunas de data de referência

Isso pode ser implementado em tudo App Builder. Não requer um Number tabela com 0 - N linhas, mas há outro tutorial sobre como gerar números exponencialmente para uma tabela como essa, tudo com App Builder subconsultas unidas.

Se sua semana começa no domingo ou na segunda-feira depende das configurações do seu banco de dados. Há uma opção para ter o global @@DATEFIRST a configuração seja segunda-feira ou domingo no nível do banco de dados.

Abaixo está a tabela Date.

Tabela de datas

A seguir estão as consultas para criar as colunas.

CAST(DateAdd(day, N.Number - {{DiasHistóricos}}, NOW()) AS Date) AS Date DatePart(year, {{Data}}) AS Year DatePart(quarter, {{Data}}) AS Quarter DatePart(month, {{Data}}) AS Month DatePart(week, {{Data}}) AS Week DatePart(day, {{Data}}) AS Day DatePart(weekday, {{Data}}) AS Weekday DateAdd(year, DateDiff(year, 0, {{Data}}), 0) AS YearStartDate DateAdd(year, DateDiff(year, 0, {{Data}}) + 1, - 1) AS YearEndDate DateAdd(day, -(DatePart(day, {{Data}}) - 1), {{Data}}) AS MonthStartDate DateAdd(day, -(DatePart(day, DateAdd(mm, 1, {{Data}}))), DateAdd(month, 1, {{Data}})) AS MonthEndDate

Estes últimos quatro são para bancos de dados com @@DATEFIRST definido como domingo. Você pode verificar se o seu dia da semana está definido como domingo, observando se o valor do dia da semana acima (DatePart(weekday, {{Data}}) para um domingo = 1. (Se for = 7 e para uma segunda-feira for = 1, estes provavelmente terão que mudar).

DateAdd(day, -(IIF(DatePart(weekday, {{Data}}) = 1, 8, DatePart(weekday, {{Data}})) - 2), {{Data}}) AS WeekStartDateMonday DateAdd(day, 6, {{SemanaDataInícioSegunda-feira}}) AS WeekEndDateMonday DateAdd(day, -(DatePart(weekday, {{Data}}) - 1), {{Data}}) AS WeekStartDateSunday DateAdd(day, 6, {{DataInícioSemanaDomingo}}) AS WeekEndDateSunday

Abaixo estão os resultados fornecidos.

Resultados