Erfassen Sie Ihre Fortschritte
Trailhead-Startseite
Trailhead-Startseite

Verwenden von Datums-, Datum/Uhrzeit- und Uhrzeitformeln

Lernziele

Nachdem Sie diese Lektion abgeschlossen haben, sind Sie in der Lage, die folgenden Aufgaben auszuführen:
  • Beschreiben der Typen "Datum", "Datum/Uhrzeit" und "Uhrzeit"
  • Erläutern des Unterschieds zwischen den Typen "Datum", "Datum/Uhrzeit" und "Uhrzeit"
  • Beschreiben von Anwendungsfällen für Formeln mit dem Rückgabetyp "Datum", "Datum/Uhrzeit" und "Uhrzeit"
  • Erstellen einer Formel mithilfe der Typen "Datum", "Datum/Uhrzeit" und "Uhrzeit"

Einführung in Datums-, Datum/Uhrzeit- und Uhrzeitformeln

Wenn es um Ihre Unternehmensverwaltung geht, sind die Datum- und Datum/Uhrzeit-Felder ideal, um das Geburtsdatum eines Kontakts, das Alter eines Kundenvorgangs oder Datum und Uhrzeit der Erstellung eines Accounts anzuzeigen. Uhrzeitfelder eignen sich besonders gut zur Verfolgung von Uhrzeiten, wie z. B. Geschäftszeiten. Sie können eine Formel verwenden, um das aktuelle Datum oder die aktuelle Uhrzeit anzuzeigen oder die Differenz zwischen zwei Datums- oder Uhrzeitangaben zu ermitteln.

Diese objektübergreifende Formel zeigt beispielsweise das Datum und die Uhrzeit, zu der ein Account erstellt wurde, auf der Seite des zugehörigen Kundenvorgangs als Datum/Uhrzeit-Wert an.
Account.CreatedDate

Eine objektübergreifende Formel zeigt Daten eines Objekts in einem anderen Objekt an. In diesem Fall zeigen wir das Erstellungsdatum (CreatedDate) des Accountobjekts im Kundenvorgangsobjekt an. Mitarbeiter Ihres Unternehmens können eine Formel sehen, die ein objektübergreifendes Feld anzeigt oder darauf verweist, auch wenn sie keinen Zugriff auf das Objekt haben, in dem sich das Feld befindet. Weitere Informationen zu objektübergreifenden Formeln finden Sie unter Tipps zum Erstellen von objektübergreifenden Formeln.

Ein Datum wird entweder als Datums- oder Datum/Uhrzeit-Wert angezeigt. In einem Datumswert werden ein Jahr, Monat und Tag gespeichert. In einem Datum/Uhrzeit-Wert werden ein Jahr, Monat, Tag und eine Uhrzeit gespeichert. Die Uhrzeit wird im GMT-Format gespeichert, aber in der Zeitzone des Benutzers angezeigt, der sie betrachtet. Es ist wichtig, Zeitzonenkonflikte im Hinterkopf zu behalten, wenn Sie in Formeln mit Datum/Uhrzeit-Werten arbeiten. Verwechslungen von Zeitzonen können leicht zu logischen Fehlern in Ihren Formelfeldern und Fehlinformationen in Ihrem Unternehmen führen.

Wenn Sie zwei Datumswerte subtrahieren, ist das Ergebnis eine ganze Zahl. Wenn Sie zwei Datum/Uhrzeit-Werte subtrahieren, ist das Ergebnis ein Dezimalwert, der die Anzahl von Tagen, Stunden und Minuten darstellt. Wenn die Differenz zwischen zwei Datum/Uhrzeit-Werten beispielsweise 3,52 ist, liegen zwischen den beiden Werten fünf Tage, 12 Stunden (0,5 eines Tages) und 29 Minuten (0,02 eines Tages).

Hinweis

Hinweis

In einem Uhrzeitwert werden die Stunden, Minuten, Sekunden und Millisekunden (HH:MM:SS.MS) gespeichert. Beachten Sie, dass auf Millisekunden ein Punkt (.) und kein Doppelpunkt (:) folgt. Ein Uhrzeitwert entspricht einem Datum/Uhrzeit-Wert ohne Datum. Die Genauigkeit eines Uhrzeitwerts wird jedoch in Millisekunden angegeben. Die Genauigkeit eines Datum/Uhrzeit-Werts wird in Sekunden angegeben.

Wenn Sie zwei Uhrzeitwerte subtrahieren, ist das Ergebnis ein positiver Millisekundenwert.

TimeField1__c hat den Wert 22:00 Uhr, TimeField2__c den Wert 21:00 Uhr.

TimeField1__c - TimeField2__c = 3600000

Das Ergebnis ist in keinem Fall eine negative Zahl. Bei der Subtraktion wird die verstrichene Zeit zwischen zwei Uhrzeitwerten unter Verwendung einer 24-Stunden-Uhr berechnet.

Gängige Funktionen und Operatoren für Datums-, Datum/Uhrzeit- und Uhrzeitwerte

Salesforce bietet mehrere Funktionen, mit denen Sie einfacher mit Datums-, Datum/Uhrzeit- und Uhrzeitwerten arbeiten können. Sie können einen Datum/Uhrzeit-Wert in ein Datum umwandeln, indem Sie die DATEVALUE()-Funktion verwenden, die einen Datum/Uhrzeit- oder Textwert verwendet und ein Datum zurückgibt. Ebenso verwendet DATETIMEVALUE() einen Datums- oder Textwert und gibt einen Datum/Uhrzeit-Wert zurück, wobei die Uhrzeit auf GMT Mitternacht festgelegt wird. Und Sie können Datum/Uhrzeit- oder Textwerte mit der Funktion TIMEVALUE() in die Uhrzeit konvertieren.

Angenommen, Sie möchten, dass ein benutzerdefiniertes Formelfeld das Datum 17. März 2015 anzeigt. Sie können mithilfe der DATE()-Funktion einen Tag, Monat und ein Jahr in den gewünschten Datumswert umwandeln.
DATE(2015, 03, 17)
DATETIMEVALUE() ist eine weitere Methode zur Umwandlung von Text in einen Datum/Uhrzeit-Wert, der dem 17. März 2015, 17 Uhr GMT entspricht.
DATETIMEVALUE("2015-03-17 17:00:00")
Sie können auch mit DATEVALUE() arbeiten, das eine Zeichenfolge verwendet und einen Datumswert zurückgibt.
DATEVALUE("2015-03-17")
Hinweis

Hinweis

DATETIMEVALUE() verwendet entweder einen Datums- oder Textwert im Format JJJJJ-MM-TT und eine Uhrzeit in GMT. Wenn Sie einen Wert außerhalb des gültigen Bereichs eingeben, z. B. den 29. Februar in einem Nichtschaltjahr oder einen Monat größer als 12, wird in Ihrem Formelfeld #Fehler! angezeigt.

Verwenden Sie zur Rückgabe des aktuellen Tags als Datumswert TODAY(). Verwenden Sie zur Rückgabe des aktuellen Augenblicks als Datum/Uhrzeit-Wert NOW(). Diese Funktionen sind nützlich, um Datumswerte in der Zukunft oder Vergangenheit zu finden, oder um festzustellen, wie viele Tage ein anderes Datum von heute entfernt ist.

Um nur den Tag, Monat oder das Jahr aus einem Datumswert als Wert zu übernehmen, verwenden Sie DAY(), MONTH() oder YEAR().

In Uhrzeitfeldern wird die Funktion TIMEVALUE() ähnlich wie bei DATEVALUE() verwendet. Angenommen, Sie möchten den Standardwert eines Uhrzeitfelds auf 17:30 Uhr festlegen. Verwenden Sie für den Standardwert des Felds in einer Formel das internationale Datumsformat (ISO).
TIMEVALUE("17:30:00.000")
Und um die aktuelle Uhrzeit abzurufen, verwenden Sie die Funktion TIMENOW(). Es gibt auch die Funktionen HOUR(), MINUTE(), SECONDS() und MILLISECONDS(). Wenn Sie beispielsweise Minuten für einen Timer verfolgen, verwenden Sie sowohl TIMENOW() als auch MINUTE(), um nur die Minuten der aktuellen Uhrzeit abzurufen.
MINUTE(TIMENOW())

Verwenden der Typen "Datum", "Datum/Uhrzeit" und "Uhrzeit" in Formeln

Eine der einfachsten Einsatzmöglichkeiten von Datumswerten ist das Bestimmen der Anzahl der Tage zwischen zwei Datumsangaben. Wenn Sie einen Datumswert von einem anderen subtrahieren, erhalten Sie die Differenz in Tagen als Wert.

Wenn Sie z. B. herausfinden möchten, wie viele Tage zwischen dem heutigen Datum und dem CreatedDate (Datum des Anlegens) eines Accounts liegen, verwenden Sie:
TODAY() - DATEVALUE(CreatedDate)
Hinweis

Hinweis

Achten Sie darauf, dass Sie nur vergangene Datumswerte von zukünftigen Datumswerten subtrahieren. Wenn Sie die Formel DATEVALUE(CreatedDate) – TODAY() umkehren, wird ein negativer Wert zurückgegeben.

Beachten Sie, dass wir DATEVALUE() verwendet haben, um CreatedDate, einen Datum/Uhrzeit-Wert, in einen Datumswert zu konvertieren, wodurch wir CreatedDate von TODAY() subtrahieren können. Datums- und Datum/Uhrzeit-Werte sind nicht kompatibel. Sie können ein Datum nicht von einem Datum/Uhrzeit-Wert bzw. einen Datum/Uhrzeit-Wert nicht von einem Datum subtrahieren, ohne vorher einen der Werte konvertiert zu haben.

Sie können einem Datumswert auch Tage hinzufügen. So erstellen Sie eine Formel, die ein Datum drei Tage nach dem heutigen Datum zurückgibt:

  1. Nutzen Sie in Setup das Feld "Schnellsuche", um zum Objekt-Manager zu wechseln.
  2. Klicken Sie auf Account | Felder & Beziehungen und dann auf Neu.
  3. Wählen Sie "Formel" aus und klicken Sie auf Weiter.
  4. Geben Sie "Future Date" (Künftiges Datum) in Feldbezeichnung ein. "Feldname" wird automatisch ausgefüllt.
  5. Wählen Sie Datum aus und klicken Sie auf Weiter.
  6. Geben Sie die folgende Formel ein:
    TODAY() + 3
    Hinweis Wenn Sie einem Datum Tage hinzufügen, ignoriert Salesforce Zahlen hinter der Dezimalstelle. TODAY() + 3 ist daher gleichwertig mit TODAY + 3,4 und TODAY() + 2 gleichwertig mit TODAY() + 2,9.

Ganz einfach, oder? Die Dinge werden etwas komplizierter, wenn Sie einem Datum Geschäftstage hinzufügen möchten. Für diese Formel verwenden wir die CASE()-Funktion, um TODAY() drei Geschäftstage hinzuzufügen. CASE() ist auf gewisse Weise mit IF() vergleichbar. Der wesentliche Unterschied besteht darin, dass IF() nur eine logische Anweisung überprüft, während CASE() eine Reihe von Anweisungen durchläuft, die als Fälle bezeichnet werden.

CASE(expression, case1, result1, case2, result2, ... , else_result) vergleicht "expression" mit case1. Sind sie gleich, wird result1 zurückgegeben. Sind sie es nicht, wird "expression" mit case2 usw. verglichen. Wenn der Ausdruck mit keinem Fall übereinstimmt, gibt die Anweisung else_result zurück.

CASE() ist nützlich für bedingte Anweisungen, die viele mögliche Ergebnisse haben. Obwohl Sie normalerweise dasselbe mit geschachtelten IF()-Anweisungen erreichen können, erleichtert CASE() das Lesen und Verstehen komplizierter Formeln.

Wir schreiben mit CASE() eine Formel, die TODAY() drei Geschäftstage hinzufügt. Der erste Schritt bei der Arbeit mit CASE() ist es, an mögliche Fälle zu denken. Unsere Formel könnte auf verschiedene Situationen stoßen:

  • Wenn TODAY() ein Sonntag, Montag oder Dienstag ist, entspricht das Hinzufügen von drei Geschäftstagen TODAY() + 3.
  • Wenn TODAY() ein Mittwoch, Donnerstag oder Freitag ist, entspricht das Hinzufügen von drei Geschäftstagen TODAY() + 5 (drei Geschäftstage und zwei Wochenendtage).
  • Wenn TODAY() ein Samstag ist, entspricht das Hinzufügen von drei Geschäftstagen TODAY() + 4 (drei Geschäftstage und ein Wochenendtag).

Damit unsere Formel funktioniert, müssen wir wissen, welcher Tag der Woche TODAY() ist. Verwenden Sie die WEEKDAY()-Funktion, um den Wochentag zu ermitteln.

Unsere CASE()-Anweisung entscheidet dann über ein Ergebnis auf der Grundlage des Wochentags von TODAY(). Unsere endgültige Formel sieht wie folgt aus:
CASE(
  WEEKDAY(TODAY()),
  3, TODAY() + 2 + 3,
  4, TODAY() + 2 + 3,
  5, TODAY() + 2 + 3,
  6, TODAY() + 1 + 3,
  TODAY() + 3
)

Sie können Variationen dieser Formel verwenden, um einem Datum eine beliebige Anzahl von Geschäftstagen hinzuzufügen. Unabhängig davon, wie viele Geschäftstage Sie hinzufügen, gibt es maximal sieben Fälle, einen für jeden Tag der Woche.

Sie können auch mathematische Operationen auf Uhrzeitwerte anwenden.

Die Einheit für die Addition oder Subtraktion von Uhrzeitwerten ist Millisekunden.

Wenn Timefield1__c den Wert 17:00 Uhr hat:

  • Timefield1__c + 600000 ist 17:10 Uhr
  • Timefield1__c - 600000 ist 16:50 Uhr

Uhrzeitfelder enthalten kein Datum. Daher entspricht das Hinzufügen von 25 Stunden zu einem Uhrzeitwert dem Hinzufügen von 1 Stunde. Die Uhr wird nach 24 Stunden neu gestartet.

Zur Erinnerung: Da Sie in einer Formel ein Uhrzeitfeld von einem anderen subtrahieren können, wird das Ergebnis stets als positive Zahl in Millisekunden angegeben.

Wenn Sie beispielsweise die Anzahl der Stunden berechnen, die ein Betrieb geöffnet ist, verwenden Sie die folgende Formel.
(ClosedTime - OpenTime) / 3600000

Und für die folgenden Uhrzeiten erhalten Sie die folgenden Ergebnisse.

ClosedTime = 17:00 Uhr, OpenTime = 08:00 Uhr, ClosedTime - OpenTime ist 9 Stunden.

ClosedTime = 05:00 Uhr, OpenTime = 07:00 Uhr, ClosedTime - OpenTime ist 22 Stunden.

Sie können auch uhrzeitabhängige Validierungsregeln einrichten. Die folgende Formel überprüft, ob eine Schicht mindestens 4 Stunden lang ist.
Shift_Ends_Time__c <= (Shift_Start_Time__c + 14400000) 

Beispiele für Datum-, Datum/Uhrzeit- und Uhrzeitwerte

  1. Diese Formel bestimmt den letzten Tag eines Monats, indem ein Tag vom ersten Tag des folgenden Monats subtrahiert wird. Dazu wird die Funktion ADDMONTHS() verwendet, um vor der Subtraktion jeden folgenden Monat zu berechnen.
    DATE(YEAR(ADDMONTHS(Date__c,1)), MONTH(ADDMONTHS(Date__c,1)), 1) - 1
  2. Diese Formel ermittelt die Anzahl der Geschäftstage zwischen TODAY() und von Date__c vor heute. Zuerst bestimmt die Formel die Anzahl der Geschäftstage zwischen TODAY() und einem bekannten Montag in der Vergangenheit, in diesem Fall dem 8. Januar 1900. Wir dividieren diesen Wert durch 7 und verwenden FLOOR(), um ihn von Tagen in Wochen umzuwandeln. Wir multiplizieren ihn dann mit 5, um ihn von Wochen in Geschäftstage zu konvertieren. Die Formel berechnet die Differenz zwischen diesem Betrag und der Anzahl der Geschäftstage seit Date__c und dem gleichen Referenz-Montag. Das Ergebnis ist die Anzahl der Geschäftstage zwischen TODAY() und Date__c in der Vergangenheit.
    (5 * (FLOOR((TODAY() - DATE(1900, 1, 8)) / 7)) + MIN(5, MOD(TODAY() - DATE(1900, 1, 8), 7)))
    -
    (5 * (FLOOR((Date__c - DATE(1900, 1, 8)) / 7)) + MIN(5, MOD(Date__c - DATE(1900, 1, 8), 7 )))
  3. Diese Formel fügt Num_Years__c zu Date__c hinzu. Sie verwendet die ADDMONTHS()-Funktion, die Schaltjahre automatisch berücksichtigt. Hinweis ADDMONTHS() verwendet bei der Durchführung mathematischer Operationen den letzten Tag eines Monats. Wenn Sie also einen Monat zu einem Datum hinzufügen, das der 30. und der letzte Tag des Monats ist, ist das Ergebnis der letzte Tag des nächsten Monats. Dieser resultierende Wert könnte der 31. sein. Ebenso ist der 28. Februar (in einem Nichtschaltjahr) plus ein Monat der 31. März.
    ADDMONTHS(Date__c, Num_Years__c * 12)
  4. Diese Formel für Kundenvorgänge prüft, ob die Vertriebsmitarbeiter Kunden zu einem gewünschten Zeitpunkt anrufen. Das Feld "Bevorzugte Zeit" stellt die Stunde dar, in der ein Kontakt für ausgehende Kundenvorgänge kontaktiert werden möchte.
    IF(
      IF((HOUR(TIMEVALUE(CreatedDate)) - 7) < 0,
        24 + (HOUR(TIMEVALUE(CreatedDate)) -7),
        (HOUR(TIMEVALUE(CreatedDate)) - 7))
    = HOUR(Contact.Preferred_Time__c), TRUE, FALSE)

Gängige Fehler in Datums-, Datum/Uhrzeit- und Uhrzeitformeln

  • Umwandeln zwischen Datum, Datum/Uhrzeit und Uhrzeit. Die Typen "Datum", "Datum/Uhrzeit" und "Uhrzeit" sind nicht austauschbar. Wenn sie geschrieben wird, um einen Datum/Uhrzeit-Wert zurückzugeben, funktioniert eine Formel mit dem Rückgabetyp "Datum" nicht. Verwenden Sie für das Umwandeln zwischen Datum, Datum/Uhrzeit und Uhrzeit die integrierten Funktionen DATEVALUE(), DATETIMEVALUE() und TIMEVALUE(). Zur Erinnerung: TODAY() gibt das aktuelle Datum als Datumswert zurück, während NOW() das aktuelle Datum und die aktuelle Uhrzeit als Datum/Uhrzeit-Wert zurückgibt. Und TIMENOW() gibt das aktuelle Datum und die aktuelle Uhrzeit als Uhrzeitwert zurück.
  • Arbeiten mit Zeitzonen. Datums-, Datum/Uhrzeit- und Uhrzeitwerte werden grundsätzlich in der Zeitzone des Benutzers angezeigt, der sie gerade betrachtet. Datum/Uhrzeit-Werte werden beim Speichern eines Datensatzes in GMT umgewandelt und als GMT gespeichert und dann erneut konvertiert, wenn ein Benutzer außerhalb der GMT sie betrachtet. Wenn Sie ein Datum in einen Datum/Uhrzeit-Wert umwandeln, ist die Zeit stets Mitternacht GMT. Achten Sie darauf, dass Sie bei der Konvertierung eines Datum/Uhrzeit-Werts mit TEXT() Zeitzonen berücksichtigen. Wenn Sie einen Datum/Uhrzeit-Wert in Text umwandeln, gibt er die Zeit in GMT zurück, was durch ein Z am Ende des Werts angezeigt wird. TEXT erzeugt immer einen Textwert mit der Zeit in GMT und nicht der Zeitzone Ihrer Organisation. Uhrzeitwerten ist weder ein Gebietsschema noch eine Zeitzone zugeordnet und sie werden nicht zwischen Benutzern in verschiedenen Zeitzonen konvertiert. Wenn Sie einen Datum/Uhrzeit-Wert mit TIMEVALUE() in einen Uhrzeitwert umwandeln, wird der GMT-Wert zurückgegeben.
  • Schaltjahre und ungültige Datumsangaben. Stellen Sie bei der Konvertierung von Text in Datums- oder Datum/Uhrzeit-Werte oder beim Hinzufügen von Jahren, Monaten oder Tagen zu einem Datum oder einem Datum/Uhrzeit-Wert sicher, dass Ihr Ergebnis nach wie vor ein gültiges Datum ist. Wenn Ihre Formel beispielsweise das Ergebnis des 31. Juni 2015 hat, wird im Formelfeld #Fehler! angezeigt. Auch wenn Ihre Formel den 29. Februar 2013 (ein Nichtschaltjahr) zurückgibt, gibt das Feld einen Fehler aus. Vergewissern Sie sich, dass Ihre Formeln Schaltjahre und die unterschiedlichen Monatslängen berücksichtigen.