# daystart Skript- und Diagrammfunktion

Diese Funktion liefert den Zeitstempel der ersten Millisekunde des Tages, in dem das Argument time liegt. Das Ergebnis wird entsprechend dem im Skript definierten TimestampFormat formatiert.

Syntax:

DayStart(time[, [period\_no[, day\_start]])

Rückgabe Datentyp: dual

Argumente

| Argument | Beschreibung |
| --- | --- |
| time | Der zu berechnende Zeitstempel. |
| period\_no | period\_no ist eine ganze Zahl oder eine Formel, die eine ganze Zahl ergibt, wobei 0 für den Tag steht, der time enthält. Negative Werte von period\_no stehen für vorangehende, positive Werte für nachfolgende Tage. |
| day\_start | Um anzugeben, dass Tage nicht um Mitternacht beginnen, geben Sie einen Versatz als Bruchteil eines Tages in day\_start an. So steht beispielsweise 0,125 für 3:00 Uhr.<br><br>Um den Versatz zu erstellen, teilen Sie also die Startuhrzeit durch 24 Stunden. Damit beispielsweise ein Tag um 7:00 Uhr beginnt, verwenden Sie den Bruch 7/24. |

## Verwendung

Die Funktion `daystart()` wird in der Regel als Teil einer Formel verwendet, wenn in der Berechnung der Teil des Tages verwendet werden soll, der bereits verstrichen ist. Beispielsweise kann sie verwendet werden, um den Gesamtlohn zu berechnen, der bisher von den Mitarbeitern am Tag verdient wurde.

In diesen Beispielen wird das Zeitstempelformat `'M/D/YYYY h:mm:ss[.fff] TT'` verwendet. Das Zeitstempelformat wird in der Anweisung `SET TimeStamp` oben in Ihrem Datenladeskript angegeben. Ändern Sie das Format in den Beispielen nach Bedarf.

Funktionsbeispiele

| Beispiel | Ergebnis |
| --- | --- |
| `daystart('01/25/2013 4:45:00 PM')` | Liefert 1/25/2013 12:00:00 AM. |
| `daystart('1/25/2013 4:45:00 PM', -1)` | Liefert 1/24/2013 12:00:00 AM. |
| `daystart('1/25/2013 16:45:00',0,0.5<br>)` | Liefert 1/25/2013 12:00:00 PM. |

## Regionaleinstellungen

Sofern nicht anders angegeben, verwenden die Beispiele in diesem Thema das folgende Datumsformat: MM/TT/JJJJ. Das Datumsformat wird in der Anweisung `SET DateFormat` in Ihrem Datenladeskript angegeben. Das Standarddatumsformat in Ihrem System kann aufgrund Ihrer regionalen Einstellungen und anderer Faktoren abweichen. Sie können die Formate in den Beispielen unten Ihren Anforderungen entsprechend ändern. Sie können auch die Formate in Ihrem Ladeskript entsprechend den Beispielen ändern.

Standardmäßige regionale Einstellungen in Anwendungen basieren auf den regionalen Systemeinstellungen des Computers oder Servers, auf dem Qlik Sense installiert ist. Wenn der Qlik Sense-Server, auf den Sie zugreifen, auf Schweden festgelegt ist, verwendet der Dateneditor die schwedischen regionalen Einstellungen für Datums-, Zeit- und Währungsangaben. Diese regionalen Formateinstellungen hängen nicht mit der Sprache zusammen, die in der Qlik Sense Benutzeroberfläche angezeigt wird. Qlik Sense wird in derselben Sprache angezeigt wie der von Ihnen verwendete Browser.

## Beispiel 1 – Einfaches Beispiel

[](https://help.qlik.com/en-US/sense/Subsystems/Hub/Content/Sense_Hub/Scripting/DateAndTimeFunctions/daystart.htm)

#### Ladeskript und Ergebnisse

Übersicht

Öffnen Sie den Dateneditor und fügen Sie das Ladeskript unten in einen neuen Abschnitt ein.

Das Ladeskript umfasst:

* Ein einfacher Datensatz enthält eine Liste der Datumsangaben, die in eine Tabelle mit dem Namen `Calendar` geladen werden.

* Die Standardsystemvariable `TimeStampFormat` (`(M/D/YYYY h:mm:ss[.fff] TT`) wird verwendet.

* Mit einem vorangehenden load-Befehl wird unter Verwendung der Funktion `daystart()` ein zusätzliches Feld mit dem Namen `SOD_timestamp` erstellt.

Abgesehen vom Datum werden der Funktion keine weiteren Parameter bereitgestellt.

Ladeskript

```
SET TimestampFormat='M/D/YYYY h:mm:ss[.fff] TT';

Calendar:
    Load
        date,
        daystart(date) as SOD_timestamp
        ;
Load
date
Inline 
[
date
03/11/2022 1:47:15 AM
03/12/2022 4:34:58 AM
03/13/2022 5:15:55 AM
03/14/2022 9:25:14 AM
03/15/2022 10:06:54 AM
03/16/2022 10:44:42 AM
03/17/2022 11:33:30 AM
03/18/2022 12:58:14 PM
03/19/2022 4:23:12 PM
03/20/2022 6:42:15 PM
03/21/2022 7:41:16 PM
];
					
```

Ergebnisse

Laden Sie die Daten und öffnen Sie ein Arbeitsblatt. Erstellen Sie eine neue Tabelle und fügen Sie die folgenden Felder als Dimensionen hinzu:

* `date`

* `SOD_timestamp`

Ergebnistabelle

| Datum | SOD\_timestamp |
| --- | --- |
| 03/11/2022 1:47:15 AM | 3/11/2022 12:00:00 AM |
| 03/12/2022 4:34:58 AM | 3/12/2022 12:00:00 AM |
| 03/13/2022 5:15:55 AM | 3/13/2022 12:00:00 AM |
| 03/14/2022 9:25:14 AM | 3/14/2022 12:00:00 AM |
| 03/15/2022 10:06:54 AM | 3/15/2022 12:00:00 AM |
| 03/16/2022 10:44:42 AM | 3/16/2022 12:00:00 AM |
| 03/17/2022 11:33:30 AM | 3/17/2022 12:00:00 AM |
| 03/18/2022 12:58:14 PM | 3/18/2022 12:00:00 AM |
| 03/19/2022 4:23:12 PM | 3/19/2022 12:00:00 AM |
| 03/20/2022 6:42:15 PM | 3/20/2022 12:00:00 AM |
| 03/21/2022 7:41:16 PM | 3/21/2022 12:00:00 AM |

Wie in der Tabelle oben zu sehen ist, wird der Tagesende-Zeitstempel für jedes Datum in unserem Datensatz erstellt. Der Zeitstempel hat das Format der Systemvariablen `TimestampFormat M/D/YYYY h:mm:ss[.fff] TT`.

## Beispiel 2 – period\_no

[](https://help.qlik.com/en-US/sense/Subsystems/Hub/Content/Sense_Hub/Scripting/DateAndTimeFunctions/daystart.htm)

#### Ladeskript und Ergebnisse

Übersicht

Öffnen Sie den Dateneditor und fügen Sie das Ladeskript unten in einen neuen Abschnitt ein.

Das Ladeskript umfasst:

* Ein Datensatz, der Strafzettel für Falschparken enthält, wird in eine Tabelle mit dem Namen `Fines` geladen. Der Datensatz umfasst die folgenden Felder:

  * `id`

  * `due_date`

  * `number_plate`

  * `amount`

* Eine vorangehende load-Anweisung, die die Funktion `daystart()` verwendet und alle drei Parameter bereitstellt: `time`, `period_no` und `day_start`. Diese vorangehende load-Anweisung erstellt die folgenden neuen Datumsfelder:

  * Ein Datumsfeld `early_repayment_period`, das sieben Tage vor Fälligkeit der Zahlung beginnt.

  * Ein Datumsfeld `late_penalty_period`, das 14 Tage nach Fälligkeit der Zahlung beginnt.

Ladeskript

```
SET TimestampFormat='M/D/YYYY h:mm:ss[.fff] TT';

Fines:
    Load
        *,
        daystart(due_date,-7) as early_repayment_period,
        daystart(due_date,14) as late_penalty_period
        ;
Load
*
Inline
[
id, due_date, number_plate,amount
1,02/11/2022, 573RJG,50.00
2,03/25/2022, SC41854,50.00
3,04/14/2022, 8EHZ378,50.00
4,06/28/2022, 8HSS198,50.00
5,08/15/2022, 1221665,50.00
6,11/16/2022, EAK473,50.00
7,01/17/2023, KD6822,50.00
8,03/22/2023, 1GGLB,50.00
];
```

Ergebnisse

Laden Sie die Daten und öffnen Sie ein Arbeitsblatt. Erstellen Sie eine neue Tabelle und fügen Sie die folgenden Felder als Dimensionen hinzu:

* `due_date`

* `early_repayment_period`

* `late_penalty_period`

Ergebnistabelle

| due\_date | early\_repayment\_period | late\_penalty\_period |
| --- | --- | --- |
| 02/11/2022 9:25:14 AM | 2/4/2022 12:00:00 AM | 2/25/2022 12:00:00 AM |
| 03/25/2022 10:06:54 AM | 3/18/2022 12:00:00 AM | 4/8/2022 12:00:00 AM |
| 04/14/2022 10:44:42 AM | 4/7/2022 12:00:00 AM | 4/28/2022 12:00:00 AM |
| 06/28/2022 11:33:30 AM | 6/21/2022 12:00:00 AM | 7/12/2022 12:00:00 AM |
| 08/15/2022 12:58:14 PM | 8/8/2022 12:00:00 AM | 8/29/2022 12:00:00 AM |
| 11/16/2022 4:23:12 PM | 11/9/2022 12:00:00 AM | 11/30/2022 12:00:00 AM |
| 01/17/2023 6:42:15 PM | 1/10/2023 12:00:00 AM | 1/31/2023 12:00:00 AM |
| 03/22/2023 7:41:16 PM | 3/15/2023 12:00:00 AM | 4/5/2023 12:00:00 AM |

Die Werte der neuen Felder sind im `TimestampFormat M/DD/YYYY tt`. Da die Funktion `daystart()` verwendet wurde, sind die Zeitstempelwerte alle die erste Millisekunde des Tages.

Die Werte für den frühen Zahlungszeitraum liegen sieben Tage vor dem Fälligkeitsdatum, da das zweite Argument, das in der Funktion `  daystart() ` übergeben wird, negativ ist.

Die Werte für den späten Zahlungszeitraum liegen 14 Tage nach dem Fälligkeitsdatum, da das zweite Argument, das in der Funktion `daystart()` übergeben wird, positiv ist.

## Beispiel 3 – day\_start

[](https://help.qlik.com/en-US/sense/Subsystems/Hub/Content/Sense_Hub/Scripting/DateAndTimeFunctions/daystart.htm)

#### Ladeskript und Ergebnisse

Übersicht

Öffnen Sie den Dateneditor und fügen Sie das Ladeskript unten in einen neuen Abschnitt ein.

Das Ladeskript umfasst:

* Derselbe Datensatz und dasselbe Szenario wie im vorigen Beispiel.

* Die gleiche vorangehende load-Anweisung wie im vorigen Beispiel.

In diesem Beispiel wird der Beginn und das Ende des Arbeitstags täglich auf 7:00 AM festgelegt.

Ladeskript

```
SET DateFormat='MM/DD/YYYY';

Fines:
    Load
        *,
        daystart(due_date,-7,7/24) as early_repayment_period,	 
        daystart(due_date,14, 7/24) as late_penalty_period
        ;
Load
*
Inline
[
id, due_date, number_plate,amount
1,02/11/2022, 573RJG,50.00
2,03/25/2022, SC41854,50.00
3,04/14/2022, 8EHZ378,50.00
4,06/28/2022, 8HSS198,50.00
5,08/15/2022, 1221665,50.00
6,11/16/2022, EAK473,50.00
7,01/17/2023, KD6822,50.00
8,03/22/2023, 1GGLB,50.00
];
```

Ergebnisse

Laden Sie die Daten und öffnen Sie ein Arbeitsblatt. Erstellen Sie eine neue Tabelle und fügen Sie die folgenden Felder als Dimensionen hinzu:

* `due_date`

* `early_repayment_period`

* `late_penalty_period`

Ergebnistabelle

| due\_date | early\_repayment\_period | late\_penalty\_period |
| --- | --- | --- |
| 02/11/2022 | 2/3/2022 7:00:00 AM | 2/24/2022 7:00:00 AM |
| 03/25/2022 | 3/17/2022 7:00:00 AM | 4/7/2022 7:00:00 AM |
| 04/14/2022 | 4/6/2022 7:00:00 AM | 4/27/2022 7:00:00 AM |
| 06/28/2022 | 6/20/2022 7:00:00 AM | 7/11/2022 7:00:00 AM |
| 08/15/2022 | 8/7/2022 7:00:00 AM | 8/28/2022 7:00:00 AM |
| 11/16/2022 | 11/8/2022 7:00:00 AM | 11/29/2022 7:00:00 AM |
| 01/17/2023 | 1/9/2023 7:00:00 AM | 1/30/2023 7:00:00 AM |
| 03/22/2023 | 3/14/2023 7:00:00 AM | 4/4/2023 7:00:00 AM |

Die Datumswerte weisen jetzt einen Zeitstempel von 7:00 AM auf, weil der Wert des Arguments `day_start`, das in die Funktion `daystart()` übergeben wurde, 7/24 war. Damit wird der Tagesbeginn auf 7:00 AM festgelegt.

Da das Feld `due_date` keinen Zeitstempel hat, wird es als 12:00 AM behandelt, gehört also noch zum vorigen Tag, da der Tag um 7:00 AM beginnt und endet. Daher beginnt der frühe Zahlungszeitraum für eine Geldstrafe, die am 11. Februar fällig ist, am 3. Februar um 7:00 Uhr.

## Beispiel 4 – Diagrammobjektbeispiel

[](https://help.qlik.com/en-US/sense/Subsystems/Hub/Content/Sense_Hub/Scripting/DateAndTimeFunctions/daystart.htm)

#### Ladeskript und Diagrammformel

Übersicht

Öffnen Sie den Dateneditor und fügen Sie das Ladeskript unten in eine neue Registerkarte ein.

In diesem Beispiel wird derselbe Datensatz und dasselbe Szenario wie im vorigen Beispiel verwendet.

Es wird aber nur die ursprüngliche Tabelle Fines in die Anwendung geladen, zusammen mit den beiden zusätzlichen Fälligkeitsdatumswerten, die in einem Diagrammobjekt berechnet werden.

Ladeskript

```
SET TimestampFormat='M/D/YYYY h:mm:ss[.fff] TT';

Fines:
    Load
*
Inline 
[
id, due_date, numer_plate,amount
1,02/11/2022 9:25:14 AM, 573RJG,50.00
2,03/25/2022 10:06:54 AM, SC41854,50.00
3,04/14/2022 10:44:42 AM, 8EHZ378,50.00
4,06/28/2022 11:33:30 AM, 8HSS198,50.00
5,08/15/2022 12:58:14 PM, 1221665,50.00
6,11/16/2022 4:23:12 PM, EAK473,50.00
7,01/17/2023 6:42:15 PM, KD6822,50.00
8,03/22/2023 7:41:16 PM, 1GGLB,50.00
];
```

Ergebnisse

Gehen Sie folgendermaßen vor:

1. Laden Sie die Daten und öffnen Sie ein Arbeitsblatt. Erstellen Sie eine neue Tabelle und fügen Sie dieses Feld als Dimension hinzu: due\_date.

2. Um das Feld early\_repayment\_period zu erstellen, erstellen Sie die folgende Kennzahl:

   =daystart(due\_date,-7,7/24)

3. Um das Feld late\_penalty\_period zu erstellen, erstellen Sie die folgende Kennzahl:

   =daystart(due\_date,14,7/24)

Ergebnistabelle

| due\_date | =daystart(due\_date,-7,7/24) | =daystart(due\_date,14,7/24) |
| --- | --- | --- |
| 02/11/2022 9:25:14 AM | 2/4/2022 7:00:00 AM | 2/25/2022 7:00:00 AM |
| 03/25/2022 10:06:54 AM | 3/18/2022 7:00:00 AM | 4/8/2022 7:00:00 AM |
| 04/14/2022 10:44:42 AM | 4/7/2022 7:00:00 AM | 4/28/2022 7:00:00 AM |
| 06/28/2022 11:33:30 AM | 6/21/2022 7:00:00 AM | 7/12/2022 7:00:00 AM |
| 08/15/2022 12:58:14 PM | 8/8/2022 7:00:00 AM | 8/29/2022 7:00:00 AM |
| 11/16/2022 4:23:12 PM | 11/9/2022 7:00:00 AM | 11/30/2022 7:00:00 AM |
| 01/17/2023 6:42:15 PM | 1/10/2023 7:00:00 AM | 1/31/2023 7:00:00 AM |
| 03/22/2023 7:41:16 PM | 3/15/2023 7:00:00 AM | 4/5/2023 7:00:00 AM |

Die Werte der neuen Felder sind im TimestampFormat M/D/YYYY h:mm:ss[.fff] TT. Da die Funktion daystart() verwendet wurde, entsprechen die Zeitstempelwerte der ersten Millisekunde des Tages.

Die Werte für den frühen Zahlungszeitraum liegen sieben Tage vor dem Fälligkeitsdatum, da das zweite Argument, das in der Funktion daystart() übergeben wurde, negativ war.

Die Werte für den späten Zahlungszeitraum liegen 14 Tage nach dem Fälligkeitsdatum, da das zweite Argument, das in der Funktion daystart() übergeben wurde, positiv war.

Die Datumswerte weisen einen Zeitstempel von 7:00 AM auf, weil der Wert des dritten Arguments, das an die Funktion daystart() (day\_start) übergeben wurde, 7/24 war.