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
.
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.