# makedate - Skript- und Diagrammfunktion

Die Funktion liefert ein Datum bestehend aus der angegebenen Jahreszahl YYYY, dem Monat MM und dem Wochentag DD.

Syntax:

MakeDate(YYYY [ , MM [ , DD ] ])

Rückgabe Datentyp: dual

Argumente

| Argument | Beschreibung |
| --- | --- |
| YYYY | Das Jahr als ganze Zahl. |
| MM | Der Monat als ganze Zahl. Ist kein Monat angegeben, wird 1 (Januar) angenommen. |
| DD | Der Tag als ganze Zahl. Ist kein Tag angegeben, wird 1 (1.) angenommen. |

## Verwendung

Die Funktion `makedate()` wird in der Regel im Skript zur Datengenerierung für die Generierung eines Kalenders verwendet. Sie kann auch verwendet werden, wenn das Datumsfeld nicht direkt als Datum verfügbar ist, sondern Umwandlungen benötigt, um Jahres-, Monats- und Tageskomponenten zu extrahieren.

In diesen Beispielen wird das Datumsformat MM/TT/JJJJ verwendet. Das Datumsformat wird im Befehl `SET DateFormat` oben in Ihrem Datenladeskript angegeben. Ändern Sie das Format in den Beispielen nach Bedarf.

Funktionsbeispiele

| Beispiel | Ergebnis |
| --- | --- |
| `makedate(2012)` | Gibt 01/01/2012 zurück. |
| `makedate(12)` | Gibt 01/01/2012 zurück. |
| `makedate(2012,12)` | Gibt 12/01/2012 zurück. |
| `makedate(2012,2,14)` | Gibt 02/14/2012 zurück. |

## 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.

Die standardmäßigen regionalen Einstellungen in Apps basieren auf den regionalen Systemeinstellungen der Computer oder Server, auf denen 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-, Uhrzeit- und Währungsangaben. Diese Einstellungen im regionalen Format hängen nicht mit der Sprache zusammen, die in der Benutzeroberfläche von Qlik Sense angezeigt wird. Qlik Sense wird in der gleichen Sprache wie der von Ihnen verwendete Browser angezeigt.

## Beispiel 1 – einfaches Beispiel

[](https://help.qlik.com/en-US/sense/Subsystems/Hub/Content/Sense_Hub/Scripting/DateAndTimeFunctions/makedate.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 enthält eine Reihe von Transaktionen für 2018 und wird in eine Tabelle namens `Transactions` geladen.

* Das Datumsfeld wird im Format der Systemvariablen `DateFormat` (MM/TT/JJJJ) bereitgestellt.

* Erstellung eines Felds `transaction_date`, das ein Datum im Format MM/TT/JJJJ zurückgibt

Ladeskript

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

Transactions:
    Load
        *,
        makedate(transaction_year, transaction_month, transaction_day) as transaction_date
        ; 
Load * Inline [
transaction_id, transaction_year, transaction_month, transaction_day, transaction_amount, transaction_quantity, customer_id
3750, 2018, 08, 30, 12423.56, 23, 2038593
3751, 2018, 09, 07, 5356.31, 6, 203521
3752, 2018, 09, 16, 15.75, 1, 5646471
3753, 2018, 09, 22, 1251, 7, 3036491
3754, 2018, 09, 22, 21484.21, 1356, 049681
3756, 2018, 09, 22, -59.18, 2, 2038593
3757, 2018, 09, 23, 3177.4, 21, 203521
];
```

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:

* `transaction_year`

* `transaction_month`

* `transaction_day`

* `transaction_date`

Ergebnistabelle

| transaction\_year | transaction\_month | transaction\_day | transaction\_date |
| --- | --- | --- | --- |
| 2018 | 08 | 30 | 08/30/2018 |
| 2018 | 09 | 07 | 09/07/2018 |
| 2018 | 09 | 16 | 09/16/2018 |
| 2018 | 09 | 22 | 09/22/2018 |
| 2018 | 09 | 23 | 09/23/2018 |

Das Feld `transaction_date` wird im vorangehenden load-Befehl erstellt, indem die Funktion `makedate()` verwendet und die Felder für Jahr, Monat und Tag als Argumente der Funktion übergeben werden.

Die Funktion kombiniert diese Werte dann und konvertiert sie in ein Datumsfeld. Die Ergebnisse werden im Format der Systemvariablen `DateFormat` zurückgegeben.

## Beispiel 2 – Geändertes „DateFormat“

[](https://help.qlik.com/en-US/sense/Subsystems/Hub/Content/Sense_Hub/Scripting/DateAndTimeFunctions/makedate.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 ersten Beispiel.

* Es wird ein Feld `transaction_date` im Format TT/MM/JJJJ erstellt, ohne die Systemvariable `DateFormat` zu ändern.

Ladeskript

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

Transactions:
    Load
        *,
        date(makedate(transaction_year, transaction_month, transaction_day), ‘DD/MM/YYYY’) as transaction_date
        ; 
Load * Inline [
transaction_id, transaction_year, transaction_month, transaction_day, transaction_amount, transaction_quantity, customer_id
3750, 2018, 08, 30, 12423.56, 23, 2038593
3751, 2018, 09, 07, 5356.31, 6, 203521
3752, 2018, 09, 16, 15.75, 1, 5646471
3753, 2018, 09, 22, 1251, 7, 3036491
3754, 2018, 09, 22, 21484.21, 1356, 049681
3756, 2018, 09, 22, -59.18, 2, 2038593
3757, 2018, 09, 23, 3177.4, 21, 203521
];
```

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:

* `transaction_year`

* `transaction_month`

* `transaction_day`

* `transaction_date`

Ergebnistabelle

| transaction\_year | transaction\_month | transaction\_day | transaction\_date |
| --- | --- | --- | --- |
| 2018 | 08 | 30 | 30/08/2018 |
| 2018 | 09 | 07 | 07/09/2018 |
| 2018 | 09 | 16 | 16/09/2018 |
| 2018 | 09 | 22 | 22/09/2018 |
| 2018 | 09 | 23 | 23/09/2018 |

In diesem Fall ist die Funktion `makedate()` innerhalb der Funktion `date()` verschachtelt. Das zweite Argument der Funktion `date()` legt das Format der Funktionsergebnisse von `makedate()` auf das erforderliche TT/MM/JJJJ fest.

## Beispiel 3 – Diagrammobjektbeispiel

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

#### Ladeskript und Diagrammformel

Übersicht

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

Das Ladeskript umfasst:

* Datensatz mit einer Reihe von Transaktionen für 2018, der in eine Tabelle namens `Transactions` geladen wird

* Transaktionsdatumswerte, die in zwei Feldern bereitgestellt werden: `year` und `month`

Erstellung einer Diagrammobjektkennzahl, `transaction_date`, die ein Datum im Format MM/TT/JJJJ zurückgibt

Ladeskript

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

Transactions:
Load * Inline [
transaction_id, transaction_year, transaction_month, transaction_amount, transaction_quantity, customer_id
3750, 2018, 08, 12423.56, 23, 2038593
3751, 2018, 09, 5356.31, 6, 203521
3752, 2018, 09, 15.75, 1, 5646471
3753, 2018, 09, 1251, 7, 3036491
3754, 2018, 09, 21484.21, 1356, 049681
3756, 2018, 09, -59.18, 2, 2038593
3757, 2018, 09, 3177.4, 21, 203521
];
```

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:

* `year`

* `month`

Um das `transaction_date` zu bestimmen, erstellen Sie die folgende Kennzahl:

`=makedate(transaction_year,transaction_month)`

Ergebnistabelle

| transaction\_year | transaction\_month | transaction\_date |
| --- | --- | --- |
| 2018 | 08 | 08/01/2018 |
| 2018 | 09 | 09/01/2018 |

Die Kennzahl `transaction_date` wird im Diagrammobjekt erstellt, indem die Funktion `makedate()` verwendet und die Felder für Jahr und Monat als Argumente der Funktion übergeben werden.

Die Funktion kombiniert dann diese Werte, ebenso wie den angenommenen Tageswert von 01. Diese Werte werden dann in ein Datumsfeld konvertiert. Die Ergebnisse werden im Format der Systemvariablen `DateFormat` zurückgegeben.

## Beispiel 4 – Szenario

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

#### Ladeskript und Diagrammformel

Übersicht

Erstellen Sie einen Kalenderdatensatz für das Kalenderjahr 2022.

Ladeskript

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

Calendar:
	load 
		*
    where year(date)=2022;
load
	date(recno()+makedate(2021,12,31)) as date
AutoGenerate 400;
```

Ergebnisse

Ergebnistabelle

| Datum |
| --- |
| 01/01/2022 |
| 01/02/2022 |
| 01/03/2022 |
| 01/04/2022 |
| 01/05/2022 |
| 01/06/2022 |
| 01/07/2022 |
| 01/08/2022 |
| 01/09/2022 |
| 01/10/2022 |
| 01/11/2022 |
| 01/12/2022 |
| 01/13/2022 |
| 01/14/2022 |
| 01/15/2022 |
| 01/16/2022 |
| 01/17/2022 |
| 01/18/2022 |
| 01/19/2022 |
| 01/20/2022 |
| 01/21/2022 |
| 01/22/2022 |
| 01/23/2022 |
| 01/24/2022 |
| 01/25/2022 |
| + 340 weitere Zeilen |

Die Funktion makedate() erstellt einen Datumswert für den 31. Dezember 2021. Die Funktion recno() stellt die Datensatznummer des aktuellen Datensatzes bereit, der in die Tabelle geladen wird, beginnend mit 1. Daher hat der erste Datensatz das Datum 1. Januar 2022. Für jede darauffolgende recno() wird dieses Datum um 1 erhöht. Diese Formel wird in eine Funktion date() eingeschlossen, um den Wert in ein Datum zu konvertieren. Dieser Vorgang wird von der Funktion autogenerate 400 Mal wiederholt. Abschließend kann mit einer vorangehenden load-Anweisung eine where-Bedingung verwendet werden, um nur Datumswerte des Jahres 2022 zu laden. Mir diesem Skript wird ein Kalender generiert, der jedes Datum im Jahr 2022 enthält.