Freigeben über


DATEADD

Gilt für:Berechnete SpalteBerechnete TabelleMeasurevisuelle Berechnung

Anmerkung

Diese Funktion wird für die Verwendung in visuellen Berechnungen abgeraten, da sie wahrscheinlich sinnlose Ergebnisse zurückgibt.

Wenn es sich bei der Eingabe um eine Datumsspalte handelt, wird eine Tabelle zurückgegeben, die eine Spalte mit Datumsangaben enthält, die entweder nach vorne oder rückwärts verschoben werden, um die angegebene Anzahl von Intervallen aus den Datumsangaben im aktuellen Kontext.
Wenn es sich bei der Eingabe um einen Kalender handelt, gibt die Funktion Datumsangaben zurück, die je nach aktuellem Kontext um die angegebene Anzahl von Intervallen verschoben wurden. Die Ausgabe enthält die primären markierten Spalten sowie zeitbezogene Spalten.

Syntax

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

Parameter

Ausdruck Definition
dates or calendar Eine Spalte, die Datumsangaben oder einen Kalenderverweis enthält.
number_of_intervals Eine ganze Zahl, die die Anzahl der Intervalle angibt, die zu den Datumsangaben addiert oder subtrahiert werden sollen.
interval Das Intervall, nach dem die Datumsangaben verschoben werden sollen. Der Wert für das Intervall kann eine der folgenden Sein: year, quarter, , month, . weekday Die Wochenenume gilt nur, wenn ein Kalenderverweis angegeben wird.
extension Gilt nur, wenn ein Kalenderverweis angegeben wird. Definieren Sie das Verhalten, wenn der ursprüngliche Zeitraum weniger Datumswerte als der resultierende Zeitraum aufweist. Gültige Werte sind: EXTENDING (Default), PRECISE, ENDALIGNED.
truncation Gilt nur, wenn ein Kalenderverweis angegeben wird. Definieren Sie das Verhalten, wenn der ursprüngliche Zeitraum mehr Datumswerte als der resultierende Zeitraum aufweist. Gültige Werte sind: BLANKS (Standard), ANCHORED.

Rückgabewert

Bei der Eingabe von Datumsspalten enthält eine Tabelle, die eine einzelne Spalte mit Datumswerten enthält.
Bei Kalendereingaben enthält eine Tabelle, die alle primären markierten Spalten und zeitbezogenen Spalten für die verschobenen Punkte im aktuellen Kontext enthält.

Bemerkungen

Das argument dates kann eine der folgenden sein:

  • Ein Verweis auf eine Datums-/Uhrzeitspalte,

  • Ein Tabellenausdruck, der eine einzelne Spalte mit Datums-/Uhrzeitwerten zurückgibt,

  • Ein boolescher Ausdruck, der eine einspaltige Tabelle mit Datums-/Uhrzeitwerten definiert.

    Anmerkung

    Einschränkungen für boolesche Ausdrücke werden im Thema CALCULATE Funktionbeschrieben.

  • Wenn die für number_of_intervals angegebene Zahl positiv ist, werden die Datumsangaben in dates nach vorne verschoben; Wenn die Zahl negativ ist, werden die Datumsangaben in dates zurück in die Zeit verschoben.

  • Der interval-Parameter ist eine Enumeration, keine Gruppe von Zeichenfolgen; Daher sollten werte nicht in Anführungszeichen eingeschlossen werden. Außerdem sollten die Werte: year, quarter, month, day vollständig geschrieben werden, wenn sie verwendet werden.

  • Die Ergebnistabelle enthält nur Datumsangaben, die in der Spalte dates vorhanden sind.

  • Wenn die Datumsspaltensyntax verwendet wird und die Datumsangaben im aktuellen Kontext kein zusammenhängendes Intervall bilden, gibt die Funktion einen Fehler zurück.

  • Diese Funktion wird für die Verwendung im DirectQuery-Modus nicht unterstützt, wenn sie in berechneten Spalten oder Sicherheitsregeln auf Zeilenebene (RLS) verwendet wird.

Beispiel: Verschieben eines Satzes von Datumsangaben

Mit der folgenden Formel werden Datumsangaben berechnet, die ein Jahr vor den Datumsangaben im aktuellen Kontext liegen.

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

Beispiel für kalenderbasierte Zeitintelligenz

Die folgende Formel gibt eine Tabelle mit Datumsangaben zurück, die aus den Datumsangaben im aktuellen Kontext um ein Jahr zurück verschoben wurden.

DATEADD ( FiscalCalendar, -1, YEAR )

Spezielles Verhalten beim Eingeben einer Datumsspalte

Wenn die Auswahl die letzten zwei Monate enthält, DATEADD verwendet die Semantik "Erweiterung" und enthält die Tage bis zum Ende des Monats. Wenn beispielsweise der 27. und der 28. Februar 2013 in der Auswahl enthalten sind und ein Monat hinzugefügt wird, gibt DATEADD den 27. bis 31. März zurück.

Dieses Verhalten tritt nur auf, wenn die letzten zwei Monate in der Auswahl enthalten sind. Wenn nur der 27. Februar ausgewählt ist, wird es bis zum 27. März gehen.

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

Kalenderbasierte Zeitintelligenz bietet mehr Kontrolle über zwei optionale Parameter: "Extension" und "Truncation". Ausführliche Informationen finden Sie in den obigen Parameterbeschreibungen.

Verhalten für kalenderbasierte DateAdd, wenn sich die Auswahl auf einer feineren Ebene befindet als die Schichtebene

Wenn der Kalenderverweis verwendet wird und sich die Auswahl auf einer feineren Ebene als der Schichtebene befindet, wird ein indexbasierter Ansatz ergriffen. Um dieses Verhalten zu veranschaulichen, betrachten wir das Szenario, in dem sich die Auswahl auf der Datumsebene befindet und DATEADD() nach Monat verschoben wird. Hier sehen Sie, was DateAdd tun wird:

  • Bestimmen Sie die Positionen der aktuellen Auswahl innerhalb des Monats.
    Wenn die aktuelle Auswahl beispielsweise den 3. bis 10. März umfasst, liegen die Positionen vom 3. bis zum 10. Tag des Monats.

  • Schicht im Monat Übernehmen der Monatsschicht – z. B. eine Schicht von +1 ändert sich März bis April.

  • Gibt die gleichen relativen Positionen im verschobenen Monat zurück. Rufen Sie den 3. zum 10. des neuen Monats ab (z. B. 3.-10. April).

Parameter für kalenderbasierte DateAdd, wenn sich die Auswahl auf einer feineren Ebene befindet als die Schichtebene

Wenn die Granularität der Auswahl feiner als die Schichteinheit ist (z. B. das Auswählen einzelner Datumsangaben während der Verschiebung nach Monat), kann das indexbasierte Verhalten zu Mehrdeutigkeiten führen, insbesondere über Monate mit unterschiedlicher Länge. Zur Behandlung dieser Edgefälle werden zwei Parameter eingeführt:

Erweiterungsparameter (für kleine → große Periodenverschiebungen):

Steuert, wie sich die Funktion verhält, wenn der Zielzeitraum länger als der aktuelle ist. Verwenden Sie einen Monat als Beispiel:

  • Precise: Behält den ursprünglichen Datumsbereich streng bei.
    Feb 25–28 → →March 25–28

  • Extending: Ermöglicht es dem Fenster, bei Bedarf zum Ende des Zeitraums zu erweitern.
    Feb 25–28 → →March 25–31

  • EndAligned: Richtet das Enddatum am Ende des Zielzeitraums aus, wenn die Auswahl das Ende des Zeitraums erreicht; andernfalls bleiben relative Positionen erhalten.
    Feb 28 → → March 31, während Feb 27March 27

Abkürzungsparameter (für große → kleine Periodenverschiebungen)

Steuert, wie sich die Funktion verhält, wenn der Zielmonat kürzer als die aktuelle ist. Verwenden Sie die Rückwärtsbewegung um einen Monat als Beispiel:

  • Anchored: Verankert das Ergebnis an dem letzten gültigen Datum des kleineren Zeitraums.
    March 31 → →Feb 28

  • Blanks: Gibt leer zurück, wenn das verschobene Datum nicht vorhanden ist.
    March 31 → → (leer) (seit Februar nicht mehr 31.

Unterschiede im Verhalten zwischen klassischer und Kalenderzeitintelligenz

Einige Szenarien können beim Vergleichen der klassischen und kalenderzeitintelligenz unterschiedliche Ergebnisse erzielen. In einem Mondjahr erzeugt SamePeriodLastYear beispielsweise unterschiedliche Ergebnisse an der Granularität des Datums. In kalenderbasierten Zeitintelligenz führt die Verschiebung vom 29. Februar 2008 zurück zu einem Jahr zum 1. März 2007, da es als 60. Tag des Jahres behandelt wird. In der klassischen Zeitintelligenz gibt die gleiche Schicht den 28. Februar 2007 zurück. Die Problemumgehung ist die Verwendung DATEADD(Kalender, -<Zahl eines Jahres>, Monats). Wenn ein Jahr beispielsweise 13 Monate im Kalender hat, verwenden Sie DATEADD(Kalender, -13, Monat). Dieser Ansatz wird sich nach Monat verschieben, sodass Februar 2008 auf Februar 2007 verschoben wird.

ZeitintelligenzfunktionenDatums- und Uhrzeitfunktionen