Arbeiten mit Formeln
Datumsformeln
Datumsformeln sind nur in Verbindung mit dem Baustein Datum möglich. Diese Formeln können in den Filtern für Datensatzverknüpfungen oder im Listenfilter verwendet werden, wenn dort der Formelbutton zu sehen ist.
Beispiel:
- Datumsfeld in Filter und Sortierung auswählen
- Formelbutton auswählen
- Formel eintragen
Dadurch werden die Datensätze entsprechend des sog. dynamischen Datumsfilter gefiltert.
HINWEIS: Keine eigenen Werte in die Klammer setzen (s. Liste mit Standard-Datumsformeln)
Liste mit Standard-Datumsformeln
Datumsformel | Beschreibung | Ausgabewert (Beispiel Berechnungszeitpunkt: 15.06.2021 (Dienstag) um 8:00 Uhr) |
---|---|---|
date(year,month,day) | Erstellt Datum aus gegebenem Jahr, Monat und Datum | Aufruf von “date(2021, 06, 15)” liefert 15.06.2021 (Dienstag) |
parseDate(text) | Erstellt Datum aus Text im Format “dd.mm.yy” oder “dd.mm.yyyy” | Aufruf von “parseDate(15.06.2021)” liefert 15.06.2021 (Dienstag) |
today() | aktuelles Datum | 15.06.2021 (Dienstag) |
now() | aktueller Moment | 15.06.2021 8:00:00.000000 |
currentWeek() | aktuelle Kalenderwoche | 2021-W24 |
startOfWeek() | Beginn der aktuellen Woche | 14.06.2021 (Montag) |
endOfWeek() | Ende der aktuellen Woche | 20.06.2021 (Sonntag) |
startOfMonth() | Beginn des aktuellen Monats | 01.06.2021 (Dienstag) |
currentMonth() | Aktueller Monat | 2021-06 |
endOfMonth() | Ende des aktuellen Monats | 30.06.2021 (Mittwoch) |
startOfQuarter() | Beginn des aktuellen Quartals | 01.04.2021 (Donnerstag) |
endOfQuarter() | Ende des aktuellen Quartals | 30.06.2021 (Mittwoch) |
startOfYear() | Beginn des aktuelles Jahres | 01.01.2021 (Freitag) |
endOfYear() | Ende des aktuellen Jahres | 31.12.2021 (Freitag) |
calendarWeek(date) | Kalenderwoche des gegebenen Datums | 24 |
datesBetween(date,date,[optionen]) | Daten zwischen den zwei gegebenen Daten | [15.06.2021, 16.06.2021, 17.06.2021, 18.06.2021] Bei Angabe vom 18.06.2021 als zweites Datum |
date(year,month,day) | Intern nutzbares Datum aus drei Zahlen | Beim Aufruf “date(2021,6,15)” wird 15.06.2021 (Dienstag) geliefert |
parseDate(text) | Formatiert einen Text in ein intern nutzbares Datum. | Beim Aufruf “parseDate(“15.06.2021”)” wird 15.06.2021 (Dienstag) geliefert |
addMinutes(date,minutes) | Minuten addiert auf einen Zeitpunkt | Aufruf von “addMinutes(today(),1)” ergibt 15.06.2021 8:01:00.000000 |
subtractMinutes(date,minutes) | Minuten subtrahiert von einem Zeitpunkt | Aufruf von “subtractMinutes(today(),1)” ergibt 15.06.2021 7:59:00.000000 |
addHours(date,hours) | Stunden addiert auf einen Zeitpunkt | Aufruf von “addHours(today(),1)” ergibt 15.06.2021 9:00:00.000000 |
subtractHours(date,hours) | Stunden subtrahiert von einem Zeitpunkt | Aufruf von “subtractHours(today(),1)” ergibt 15.06.2021 8:00:00.000000 |
addDays(date, days) | Tage addiert auf einen Zeitpunkt | Aufruf von “addDays(today(),1)” ergibt 16.06.2021 8:00:00.000000 |
subtractDays(date, days) | Tage subtrahiert von einem Zeitpunkt | Aufruf von “subtractDays(today(),1)” ergibt 14.06.2021 8:00:00.000000 |
addWeeks(date, weeks) | Monate addiert auf einen Zeitpunkt | Aufruf von “addWeeks(today(),1)” ergibt 22.06.2021 8:00:00.000000 |
subtractWeeks(date, weeks) | Wochen subtrahiert von einem Zeitpunkt | Aufruf von “subtractWeeks(today(),1)” ergibt 08.06.2021 8:00:00.000000 |
addMonths(date, months) | Monate addiert auf einen Zeitpunkt | Aufruf von “addMonths(today(),1)” ergibt 15.07.2021 8:00:00.000000 |
subtractMonths(date, months) | Monate subtrahiert von einem Zeitpunkt | Aufruf von “subtractMoths(today(),1)” ergibt 15.05.2021 8:00:00.000000 |
In den Klammern der einzelnen Formeln können keine eigenen Werte hinsichtlich einer eigenen Zeitpunktsberechnung erfolgen (zum Beispiel: endOfMonth(24.09.2021) = 30.09.2021). Die Eingabe einer Datumsformel erfolgt immer vom tagesaktuellen Datum automatisch durch die App. Das hat den Vorteil, dass dieser sog. dynamische Filter automatisch “mitwandert” und die Filterung entsprechend der gewählten Formel immer aktuell hält.
Möchte man mit den o. g. Formeln doch mit einem eigenen Zeitpunkt arbeiten, muss dieser selbst errechnet werden (s. Formelberechnung mit Datumsformel).
Formelberechnung mit Datumsformel
(nur möglich über einen Datumsbezug aus einer Datumsformel (s. o.))
Mit den o. g. Datumsformeln kann ebenfalls gerechnet werden.
Beispiel (Berechnungszeitpunkt 15.06.2021):
today() + 5 = 20.06.2021
today() - 5 = 10.06.2021 startOfMonth() + 10 = 11.06.2021
Für das selbe Ergebnis können auch die Formeln addDays() und subtractDays() genutzt werden:
Beispiel (Berechnungszeitpunkt 15.06.2021):
addDays(today() , 5) = 20.06.2021 subtractDays(today() , 5) = 10.06.2021
Sollen der Datumsformel nun ganze Monate addiert oder subtrahiert werden, können die Formelberechnungen addMonths() und subtractMonths() verwendet werden. Der Berechnungsformel und der gewählten Datumsformel werden anhand der frei gewählten Zahl die entsprechenden Monate hinzugefügt.
HINWEIS: Die Berechnung über diese Formeln über einen Monatswechsel führt zu einer falschen Berechnung aufgrund der unterschiedlichen Monatsendungen (s. Beschreibung unter den folgenden Beispielen).
Die zu addierende oder subtrahierende Zahl (muss eine ganze und positive Zahl sein) und wird mit einer Komma-Trennung in der entsprechenden Formel eingesetzt.
Beispiel:
Berechnung | Beispiel (Berechnungszeitpunkt: 15.06.2021) | Ergebnis |
---|---|---|
addMonths() | addMonths(startOfWeek(),1) | 14.07.2021 |
addMonths() | addMonths(startOfWeek(),3) | 14.09.2021 |
subtractMonths() | subtractMonths(startOfQuarter(),1) | 01.03.2021 |
subtractMonths() | subtractMonths(startOfQuarter(),5) | 01.10.2020 |
Eine Berechnung des Endes des letzten Monats kann nicht über subtractMonths(endOfMonth(),1) dargestellt werden. Die Datumsformel endOfMonth() greift dabei nämlich auf das Ende des aktuellen Monats zu. Aufgrund der unterschiedlichen Endtage der einzelnen Monate würde immer mindestens ein Tag ignoriert werden.
Beispiel (Berechnungszeitpunkt: 15.03.2022):
erwartetes Ergebnis:
subtractMonths(endOfMonth(),1) = subtractMonths(31.03.2022, 1) = 28.02.2022
tatsächliches Ergebnis:
subtractMonths(endOfMonth(),1) = subtractMonths(31.03.2022, 1) = 03.03.2022
Dieses Ergebnis kommt zustande, da der Februar 2022 nur 28 Tage hat und nicht 31 Tage wie der März.
Um dieses Problem zu umgehen wird einfach der Wert vom Monatsanfang errechnet und davon ein Tag abgezogen.
Beispiel (Berechnungszeitpunkt: 15.03.2022):
startOfMonth() - 1 = 28.02.2022
Darstellungen von dynamischen Zeitspannen mit Formelberechnungen:
Durch die Möglichkeit der Formelberechnung mit einer Datumsformel lassen sich verschiedene Darstellungsmöglichkeiten errechnen, die in den Filteroptionen (z. B. einer Kachel) leicht verwendet werden können.
Formelkombination | Beschreibung | Ausgabewerte (Beispiel Berechnungszeitpunkt: 15.06.2021) |
---|---|---|
startOfWeek() und endOfWeek() | aktuelle Woche | 14.06.2021 und 20.06.2021 |
startOfWeek() -7 und endOfWeek() -7 | letzte Woche | 07.06.2021 und 13.06.2021 |
startOfMonth() und endOfMonth() | aktueller Monat | 01.06.2021 und 30.06.2021 |
subtractMonths(startOfMonth(),1) und startOfMonth()-1 | Letzter Monat | 01.05.2021 und 31.05.2021 |
Beispiel “alle Datensätze aus dem Vormonat (Berechnungszeitpunkt: 15.03.2022):”
- Designmodus Arbeitsbereich öffnen
- Kachel auswählen und in den Einstellungen Filter & Sortierung öffnen
- Datumsfeld für Filter wählen
- zutreffenden Operator auswählen
- über den jeweiligen Formelbutton die Datumsformel inkl. Formelberechnung eingeben
Im Ergebnis wird der gesetzte Filter beim Aufrufen des Bausteins automatisch anhand der Berechnung vorbelegt: