Loading

Berechnen der Stunden während der Geschäftszeiten zwischen zwei Zeitstempeln

Veröffentlichungsdatum: Jun 6, 2023
Aufgabe
So berechnen Sie die Anzahl an Stunden während der Geschäftszeit, die zwischen zwei Zeitstempeln liegen, beispielsweise um zu berechnen, wie viel Zeit eine Aufgabe in Anspruch genommen hat, die zwischen einem Zeitstempel für die Einreichung ([Neu]) und dem für den Abschluss ([Verarbeitet]) vergangen ist. 
 
Schritte
Diese Lösung basiert auf der Annahme, dass Zeitstempel für den Beginn und Abschluss einer bestimmten Handlung vorhanden sind. Diese werden hier als [Aktionsbeginn] und [Aktionsabschluss] bezeichnet.  Die folgenden Schritte werden in der angehängten Arbeitsmappe dargestellt.

Schritt 1:

Erstellen Sie Parameter, um Anfang und Ende der Geschäftszeiten anzugeben. Auf diese Weise können Sie die Geschäftszeiten individuell anpassen. 
  1. Klicken Sie mit der rechten Maustaste in den Datenbereich und wählen Sie Parameter erstellen
  2. Benennen Sie den Parameter mit Day Open Hour (Uhrzeit (Stunde) für Öffnen), geben Sie die folgenden Werte ein und klicken Sie anschließend auf OK
    • Datentyp: Ganzzahl
    • Zulässige Werte: Bereich
    • Minimum:
    • Maximum: 12 
    • Schrittgröße:
  3. Klicken Sie mit der rechten Maustaste in den Datenbereich und wählen Sie Parameter erstellen
  4. Benennen Sie den Parameter mit Day Open Minute (Uhrzeit (Minute) für Öffnen), geben Sie die folgenden Werte ein und klicken Sie anschließend auf OK
    • Datentyp: Zeichenfolge
    • Zulässige Werte: Liste 
    • Liste der Werte: "00", "15", "30" und "45" 
  5. Wiederholen Sie die beiden Schritte oben für Day Close Hour (Uhrzeit (Stunde) für Schließen) und Day Close Minute (Uhrzeit (Minuten) für Schließen). 
Hinweis: Die Schritte oben basieren auf einer Zeitangabe im Zwölf-Stunden-Format, und für die Angabe der Öffnungs- und Schließzeiten werden 15-Minuten-Intervalle genutzt. Passen Sie die Angaben Ihrem Bedarf entsprechend an (0–24 anstatt 1–12 für die Stundenangaben, alle 10 Minuten anstelle von alle 15 Minuten usw.). 

Schritt 2:

Erstellen Sie Berechnungen, um die Uhrzeit auf den Beginn der Geschäftszeiten des folgenden Tages aufzurunden. 
  1. Wähen Sie Analyse > Berechnetes Feld erstellen.
  2. Benennen Sie das Feld mit "Action Start: Rounded", (Aktionsstart: gerundet) geben Sie die folgende Berechnung ein und klicken Sie dann auf OK
     
    IF (DATEPART('hour', [Action Start]) * 60) + DATEPART('minute', [Action Start])  > (60 * (12 + [Day Close Hour]) ) + INT([Day Close Minute])
    THEN
    // created after End of Day so round to start of next business day
    DATEADD('minute', (60 * (24 + [Day Open Hour])) + INT([Day Open Minute]), DATETRUNC('day',[Action Start])) 
    ELSEIF
    (DATEPART('hour', [Action Start]) * 60) + DATEPART('minute', [Action Start])  < (60 * [Day Open Hour]) + INT([Day Open Minute])
    THEN
    // created before Start of Day so round to start of business day
    DATEADD('minute', (60 * [Day Open Hour]) + INT([Day Open Minute]), DATETRUNC('day',[Action Start])) 
    ELSE
    [Action Start]
    END
  3. Wählen Sie Analyse > Berechnetes Feld erstellen, benennen Sie das Feld mit "Action Start: Round to Weekday" (Aktionsstart: Auf Wochentag aufrunden) und geben Sie die folgende Berechnung ein, um zu prüfen, ob der neue gerundete Zeitstempel auf ein Wochenende fällt:
    IF DATENAME('weekday',[Action Start : Rounded]) = "Saturday" 
    THEN 
    // move to start of day monday by adding two days (48 hrs) and the monday morning hours
    DATEADD('minute', (60 * (48 + [Day Open Hour])) + INT([Day Open Minute]), DATETRUNC('day', [Action Start : Rounded]))
    ELSEIF DATENAME('weekday',[Action Start : Rounded]) = "Sunday" 
    THEN
    // move to start of day monday by adding a day (24 hrs) and the monday morning hours
    DATEADD('minute', (60 * (24 + [Day Open Hour])) + INT([Day Open Minute]), DATETRUNC('day', [Action Start : Rounded]))
    ELSE 
    [Action Start : Rounded]
    END
  4. Wiederholen Sie die beiden Berechnungen oben für [Action End] (Aktionsabschluss).

Schritt 3:

Erstellen Sie Berechnungen, um die Zeitdifferenz zu ermitteln. 
  1. Erstellen Sie die Berechnung unten und benennen Sie sie mit "Start: Time to End of Day" (Beginn: Zeit bis Tagesende).
    DATEDIFF(  'minute',
        [Action Start: Round to Weekdays], 
        DATEADD('minute', (60 * (12 + [Day Close Hour])) + INT([Day Close Minute]), DATETRUNC('day',[Action Start: Round to Weekdays]))
    )
  2. Wiederholen Sie die Berechnung oben für Day Open Hour und Minute und benennen Sie sie mit "End: Time From Start of Day" (Abschluss: Zeit seit Tagesbeginn).
  3. Erstellen Sie drei DATEDIFF-Berechnungen, sprich je eine für Minuten, Tage und Wochen, um das Endergebnis leichter berechnen zu können:
    "DateDiff Days"
    DATEDIFF('day', [Action Start: Round to Weekdays], [Action End : Round to Weekdays])
    "DateDiff Minutes"
    DATEDIFF('minute', [Action Start: Round to Weekdays], [Action End : Round to Weekdays])
    "DateDiff Weeks"
    DATEDIFF('week', [Action Start: Round to Weekdays], [Action End : Round to Weekdays])
  4. Erstellen Sie eine Berechnung um die Anzahl der Minuten pro Werktag zu verfolgen und benennen Sie sie "Minuten pro Werktag" 
    (60 * (12 + [Day Close Hour (pm)] - [Day Open Hour (am)]) + INT([Day Close Minute (pm)]) - 
    INT([Day Open Minute (am)]))
  5. Erstellen Sie eine abschließende Berechnung, in der alle Elemente zusammengefasst werden:
     
    IF DATETRUNC('day', [Action Start: Round to Weekdays]) = DATETRUNC('day', [Action End : Round to Weekdays])
    THEN
    // the same day so just return the minutes between the two times on the same day
    [DateDiff minutes]
    ELSEIF DATETRUNC('week', [Action Start: Round to Weekdays]) = DATETRUNC('week', [Action End : Round to Weekdays])
    THEN
    // the two days are in the same week, so add the time on the created day, the time on the end day, plus a full day for each day between
    (([DateDiff days] - 1) * [Minutes per workday] ) + [Start: Time to end of day] + [End : Time from start of day ]
    ELSE
    // the days are in two different weeks, so get the same calc as above, and subtract the weekends between
    // weekends between would be datediff weeks * 2 * work minutes per day
    (([DateDiff days] - 1 - ([DateDiff weeks] * 2)) * [Minutes per workday] ) + [Start: Time to end of day] + [End: Time from start of day ]
    END
Zusätzliche Ressourcen
Die oben genannten Schritte runden alle Zeitstempel so ab, dass wenn sie außerhalb der normalen täglichen Geschäftszeiten liegen, sie zum Beginn des nächsten Geschäftstages aufgerundet werden.

Über diesen Artikel diskutieren... Feedback-Forum
Nummer des Knowledge-Artikels

001456485

Anhänge

DATEDIFF weekends & business hours.twbx

176 KB

 
Laden
Salesforce Help | Article