Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
Aplica-se a:
Coluna calculada
Tabela calculada
Medida
Cálculo visual
Observação
Esta função é desencorajada para uso em cálculos visuais pois provavelmente retorna resultados sem sentido.
Se a entrada for uma coluna de data, retorna uma tabela que contém uma coluna de datas, deslocada para frente ou para trás no tempo pelo número especificado de intervalos das datas no contexto atual.
Se a entrada for um calendário, a função retornará datas deslocadas para frente ou para trás no tempo pelo número especificado de intervalos, com base no contexto atual. A saída inclui as colunas primárias marcadas, bem como colunas relacionadas ao tempo.
Sintaxe
DATEADD(<dates> or <calendar>, <number_of_intervals>, <interval>[,<Extension>],[,<Truncation>])
Parâmetros
| Vigência | Definição |
|---|---|
dates or calendar |
Uma coluna que contém datas ou uma referência de calendário. |
number_of_intervals |
Um inteiro que especifica o número de intervalos a serem adicionados ou subtraídos das datas. |
interval |
O intervalo pelo qual as datas devem ser alteradas. O valor para intervalo pode ser um dos seguintes: year, quarter, month, week, day. O enum da semana só é aplicável quando é fornecida uma referência de calendário. |
extension |
Aplicável apenas quando é fornecida uma referência de calendário. Defina o comportamento quando o período de tempo original tem menos datas do que o período de tempo resultante. Os valores válidos são: EXTENDING (Default), PRECISE, ENDALINED. |
truncation |
Aplicável apenas quando é fornecida uma referência de calendário. Defina o comportamento quando o período de tempo original tiver mais datas do que o período de tempo resultante. Os valores válidos são: BLANKS (Default), ANCHORED. |
Valor de retorno
Para entrada de coluna de data, uma tabela contendo uma única coluna de valores de data.
Para entrada de calendário, uma tabela que contém todas as colunas marcadas primárias e colunas relacionadas ao tempo para os períodos deslocados, no contexto atual.
Comentários
O argumento dates pode ser qualquer um dos seguintes:
Uma referência a uma coluna de data/hora,
Uma expressão de tabela que retorna uma única coluna de valores de data/hora,
Uma expressão booleana que define uma tabela de coluna única de valores de data/hora.
Observação
Restrições em expressões booleanas são descritas no tópico, CALCULATE função.
Se o número especificado para
number_of_intervalsfor positivo, as datas emdatessão antecipadas no tempo; Se o número for negativo, as datas emdatessão deslocadas no tempo.O parâmetro
intervalé uma enumeração, não um conjunto de cadeias de caracteres; por conseguinte, os valores não devem ser colocados entre aspas. Além disso, os valores:year,quarter,month,daydevem ser escritos na íntegra ao usá-los.A tabela de resultados inclui apenas datas que existem na coluna
dates.Se a sintaxe da coluna de data for usada e as datas no contexto atual não formarem um intervalo contíguo, a função retornará um erro.
Esta função não é suportada para utilização no modo DirectQuery quando utilizada em colunas calculadas ou regras de segurança ao nível da linha (RLS).
Exemplo - Alterar um conjunto de datas
A fórmula a seguir calcula datas que são um ano antes das datas no contexto atual.
= DATEADD ( DateTime[DateKey], -1, YEAR )
Exemplo de inteligência de tempo baseada em calendário
A fórmula a seguir retorna uma tabela de datas deslocadas um ano atrás das datas no contexto atual.
DATEADD ( FiscalCalendar, -1, YEAR )
Comportamento especial quando a entrada é uma coluna de data
Quando a seleção incluir os dois últimos dias do mês, DATEADD usará semântica de "extensão" e incluirá os dias até o final do mês. Por exemplo, quando 27 e 28 de fevereiro de 2013 forem incluídos na seleção e um mês for adicionado, DATEADD retornará de 27 a 31 de março.
Esse comportamento só acontece quando os dois últimos dias do mês são incluídos na seleção. Se apenas 27 de fevereiro for selecionado, irá para 27 de março.
= DATEADD(DateTime[DateKey], 1, month)
A inteligência de tempo baseada em calendário fornece mais controle através de dois parâmetros opcionais: "Extensão" e "Truncamento". Consulte as descrições dos parâmetros acima para obter detalhes.
Comportamento para DateAdd baseado em calendário quando a seleção está em um grão mais fino do que o nível de turno
Quando a referência de calendário é usada e a seleção está em um grão mais fino do que o nível de turno, uma abordagem baseada em índice é adotada. Para ilustrar esse comportamento, vamos considerar o cenário em que a seleção está no nível de data e DATEADD() está mudando por mês. Aqui está o que o DateAdd fará:
Determine as posições da seleção atual dentro do mês.
Por exemplo, se a seleção atual se estender de 3 a 10 de março, as posições serão do 3º ao 10º dia do mês.Mudar o mês Aplique o turno do mês — por exemplo, um turno de +1 muda de março para abril.
Retorne as mesmas posições relativas no mês deslocado Recupere do 3º ao 10º do novo mês (por exemplo, 3 a 10 de abril).
Parâmetros para DateAdd baseado em calendário quando a seleção está em um grão mais fino do que o nível de deslocamento
Quando a granularidade da seleção é mais fina do que a unidade de turno (por exemplo, selecionando datas individuais enquanto muda por mês), o comportamento baseado em índice pode levar a ambiguidades, especialmente em meses de comprimentos variados. Para lidar com esses casos de borda, dois parâmetros são introduzidos:
Parâmetro de extensão (para pequenas → grandes variações de período):
Controla como a função se comporta quando o período de destino é maior do que o atual. Usemos o avanço de um mês como exemplo:
Precise: Mantém rigorosamente o intervalo de datas original.
Feb 25–28→ →March 25–28Extending: Permite que a janela se expanda no final do período , se necessário.
Feb 25–28→ →March 25–31EndAligned: Alinha a data de fim com o fim do período de destino quando a seleção atinge o fim do seu período; caso contrário, preserva posições relativas.
→Feb 28→March 31, enquantoFeb 27→March 27
Parâmetro de truncamento (para grandes → pequenas variações de período)
Controla como a função se comporta quando o mês de destino é menor do que o atual. Use o movimento de um mês para trás como exemplo:
Anchored: Ancora o resultado à última data válida do período mais pequeno.
March 31→ →Feb 28Blanks: Retorna em branco quando a data deslocada não existe.
March 31→ → (em branco) (já que fevereiro não tem dia 31)
Diferenças de comportamento entre a inteligência de tempo clássica e de calendário
Alguns cenários podem produzir resultados diferentes ao comparar a inteligência de tempo clássica e de calendário. Por exemplo, em um ano lunar, SamePeriodLastYear produzirá resultados diferentes na granularidade da data. Na inteligência de tempo baseada em calendário, mudar 29 de fevereiro de 2008 para trás um ano resulta em 1 de março de 2007, porque é tratado como o 60º dia do ano. Na inteligência temporal clássica, o mesmo turno retorna em 28 de fevereiro de 2007. A solução alternativa é usar DATEADD(Calendário, -<número de um ano>, mês). Por exemplo, se um ano tiver 13 meses no calendário, use DATEADD(Calendário, -13, mês). Esta abordagem mudará por mês, pelo que fevereiro de 2008 passará para fevereiro de 2007.