Compartir vía


DATEADD

Se aplica a:columna Calculadatabla calculadaMedidacálculo visual

Nota

No se recomienda usar esta función en cálculos visuales, ya que probablemente devuelva resultados sin sentido.

Si input es una columna de fecha, devuelve una tabla que contiene una columna de fechas, desplazada hacia delante o hacia atrás en el tiempo por el número especificado de intervalos de las fechas en el contexto actual.
Si la entrada es un calendario, la función devuelve fechas desplazadas hacia delante o hacia atrás en el tiempo por el número especificado de intervalos, en función del contexto actual. La salida incluye las columnas etiquetadas principales, así como las columnas relacionadas con el tiempo.

Sintaxis

DATEADD(<dates> or <calendar>, <number_of_intervals>, <interval>[,<Extension>],[,<Truncation>])

Parámetros

Término Definición
dates or calendar Columna que contiene fechas o una referencia de calendario.
number_of_intervals Entero que especifica el número de intervalos que se van a agregar o restar de las fechas.
interval Intervalo por el que se van a desplazar las fechas. El valor de interval puede ser uno de los siguientes: year, , quartermonth, week, . day La enumeración de semana solo es aplicable cuando se proporciona una referencia de calendario.
extension Solo se aplica cuando se proporciona una referencia de calendario. Defina el comportamiento cuando el período de tiempo original tenga menos fechas que el período de tiempo resultante. Los valores válidos son: EXTEND (valor predeterminado), PRECISE, ENDALIGNED.
truncation Solo se aplica cuando se proporciona una referencia de calendario. Defina el comportamiento cuando el período de tiempo original tenga más fechas que el período de tiempo resultante. Los valores válidos son: BLANKS (Valor predeterminado), ANCHORED.

Valor devuelto

Para la entrada de columna de fecha, una tabla que contiene una sola columna de valores de fecha.
Para la entrada del calendario, una tabla que contiene todas las columnas etiquetadas principal y columnas relacionadas con el tiempo para los períodos desplazados, en el contexto actual.

Observaciones

El argumento dates puede ser cualquiera de los siguientes:

  • Referencia a una columna de fecha y hora,

  • Expresión de tabla que devuelve una sola columna de valores de fecha y hora,

  • Expresión booleana que define una tabla de una sola columna de valores de fecha y hora.

    Nota

    Las restricciones en las expresiones booleanas se describen en el tema, CALCULATE función.

  • Si el número especificado para number_of_intervals es positivo, las fechas de dates se mueven hacia delante en el tiempo; si el número es negativo, las fechas de dates se vuelven a cambiar en el tiempo.

  • El parámetro interval es una enumeración, no un conjunto de cadenas; por lo tanto, los valores no deben incluirse entre comillas. Además, los valores: year, quarter, month, day deben escribirse en su totalidad al usarlos.

  • La tabla de resultados solo incluye fechas que existen en la columna dates.

  • Si se usa la sintaxis de columna de fecha y las fechas del contexto actual no forman un intervalo contiguo, la función devuelve un error.

  • Esta función no se admite para su uso en el modo DirectQuery cuando se usa en columnas calculadas o reglas de seguridad de nivel de fila (RLS).

Ejemplo: Cambio de un conjunto de fechas

La fórmula siguiente calcula las fechas que son un año antes de las fechas en el contexto actual.

= DATEADD ( DateTime[DateKey], -1, YEAR )

Ejemplo de inteligencia de tiempo basada en calendarios

La fórmula siguiente devuelve una tabla de fechas cambiadas un año de nuevo a partir de las fechas del contexto actual.

DATEADD ( FiscalCalendar, -1, YEAR )

Comportamiento especial cuando la entrada es una columna de fecha

Cuando la selección incluya los últimos dos días del mes, DATEADD usará la semántica de "extensión" e incluirá los días hasta el final del mes. Por ejemplo, cuando se incluyen el 27 y el 28 de febrero de 2013 en la selección y se agrega un mes, DATEADD devolverá el 27 de marzo al 31.

Este comportamiento solo se produce cuando se incluyen los últimos dos días del mes en la selección. Si solo se selecciona el 27 de febrero, irá al 27 de marzo.

= DATEADD(DateTime[DateKey], 1, month)

La inteligencia de tiempo basada en calendario proporciona más control a través de dos parámetros opcionales: "Extensión" y "Truncamiento". Consulte las descripciones de parámetros anteriores para obtener más información.

Comportamiento de dateAdd basado en calendario cuando la selección está en un grano más preciso que el nivel de desplazamiento

Cuando se usa la referencia de calendario y la selección está en un nivel más preciso que el nivel de desplazamiento, se toma un enfoque basado en índices. Para ilustrar este comportamiento, consideremos el escenario en el que la selección está en el nivel de fecha y DATEADD() cambia por mes. Esto es lo que Hará DateAdd:

  • Determine las posiciones de la selección actual en el mes.
    Por ejemplo, si la selección actual abarca el 3 al 10 de marzo, las posiciones van del 3º al día 10 del mes.

  • Cambiar el mes Aplicar el turno de mes, por ejemplo, un cambio de +1 cambia de marzo a abril.

  • Devolver las mismas posiciones relativas en el mes desplazado Recuperar el 3º al 10 del nuevo mes (por ejemplo, 3-10 de abril).

Parámetros para dateAdd basado en calendario cuando la selección está en un grano más preciso que el nivel de desplazamiento

Cuando la granularidad de selección es más fina que la unidad de desplazamiento (por ejemplo, la selección de fechas individuales al cambiar por mes), el comportamiento basado en índices puede provocar ambigüedades, especialmente en meses de distintas longitudes. Para controlar estos casos perimetrales, se presentan dos parámetros:

Parámetro de extensión (para pequeños → desplazamientos de período grandes):

Controla cómo se comporta la función cuando el período de destino es mayor que el actual. Use avanzar un mes como ejemplo:

  • Precise: mantiene estrictamente el intervalo de fechas original.
    Feb 25–28 → →March 25–28

  • Extending: permite que la ventana se expanda hacia el final del período si es necesario.
    Feb 25–28 → →March 25–31

  • EndAligned: alinea la fecha de finalización con el final del período de destino cuando la selección alcanza el final de su período; de lo contrario, conserva las posiciones relativas.
    Feb 28 → → March 31, mientras que Feb 27March 27

Parámetro de truncamiento (para grandes → pequeños desplazamientos de período)

Controla cómo se comporta la función cuando el mes de destino es más corto que el actual. Use mover hacia atrás un mes como ejemplo:

  • Anchored: ancla el resultado a la última fecha válida del período más pequeño.
    March 31 → →Feb 28

  • Blanks: devuelve en blanco cuando la fecha cambiada no existe.
    March 31 → → (en blanco) (ya que febrero no tiene el 31)

Diferencias en el comportamiento entre la inteligencia de tiempo clásica y de calendario

Algunos escenarios pueden producir resultados diferentes al comparar la inteligencia de tiempo clásica y del calendario. Por ejemplo, en un año lunar, SamePeriodLastYear producirá resultados diferentes en la granularidad de fecha. En la inteligencia de tiempo basada en el calendario, el cambio del 29 de febrero de 2008 a un año da como resultado el 1 de marzo de 2007, ya que se trata como el día 60 del año. En la inteligencia de tiempo clásica, el mismo turno devuelve el 28 de febrero de 2007. La solución alternativa es usar DATEADD(Calendario, -<número de un año>, mes). Por ejemplo, si un año tiene 13 meses en el calendario, use DATEADD(Calendario, -13, mes). Este enfoque cambiará por mes para que febrero de 2008 vaya a febrero de 2007.

funciones de inteligencia de tiempofunciones de fecha y hora