# makedate – Skript- och diagramfunktion

Denna funktion returnerar ett datum beräknat utifrån året YYYY, månaden MM och dagen DD.

Syntax:

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

Returnerad datatyp: dual

Argument

| Argument | Beskrivning |
| --- | --- |
| YYYY | Året i form av ett heltal. |
| MM | Månaden i form av ett heltal. Om inget månadsnummer anges, antas 1 (januari). |
| DD | Dagen i form av ett heltal. Om inget dagsnummer anges, antas 1 (den första). |

## Användning

`makedate()`-funktionen skulle i normalfallet användas i skriptet för datagenerering för att generera en kalender. Detta kan också användas när datumfältet inte är direkt tillgängligt som datum, utan måste transformeras för att extrahera års-, månads- och datumkomponenterna.

I de här exemplen används datumformatet MM/DD/ÅÅÅÅ. Datumformatet anges i `SET DateFormat`-satsen längst upp i dataladdningsskriptet. Ändra formatet i exemplen så att det passar dina krav.

Exempel på funktioner

| Exempel | Resultat |
| --- | --- |
| `makedate(2012)` | Returnerar 01/01/2012. |
| `makedate(12)` | Returnerar 01/01/2012. |
| `makedate(2012,12)` | Returnerar 12/01/2012. |
| `makedate(2012,2,14)` | Returnerar 02/14/2012. |

## Lokala inställningar

Om inget annat anges använder exemplen i detta ämne följande datumformat: MM/DD/ÅÅÅÅ. Datumformatet anges i `SET DateFormat`-satsen i datainläsningsskriptet. Förvald datumformatering kan vara annorlunda i ditt system, på grund av dina regionala inställningar och andra faktorer. Du kan ändra formaten i exemplen nedan så att det passar dina krav. Eller så kan du ändra formaten i ditt laddningsskript så att de matchar dessa exempel.

Standardregionalinställningar i appar baseras på de regionala systeminställningarna för datorn eller servern där Qlik Sense är installerad. Om Qlik Sense-servern du ansluter till är inställd på Sverige så kommer skriptredigeraren använda regionala inställningar för Sverige för datum, tid och valuta. Dessa regionala formatinställningar är inte relaterade till språket som visas i Qlik Sense användargränssnittet. Qlik Sense kommer att visas på samma språk som webbläsaren du använder.

## Exempel 1 – Grundläggande exempel

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

#### Laddningsskript och resultat

Översikt

Öppna dataladdningsredigeraren och lägg till laddningsskriptet nedan i ett nytt delavsnitt.

Laddningsskriptet innehåller:

* En datauppsättning som innehåller transaktioner för 2018 som läses in i en tabell som heter `Transactions`.

* Datumfältet tillhandahålls i formatet (ÅÅÅÅ-MM-DD) i systemvariabeln `DateFormat`.

* Ett fält `transaction_date` skapas som returnerar ett datum i formatet MM/DD/YYYY.

Laddningsskript

```
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
];
```

Resultat

Ladda data och öppna ett ark. Skapa en ny tabell och lägg till dessa fält som dimensioner:

* `transaction_year`

* `transaction_month`

* `transaction_day`

* `transaction_date`

Resultattabell

| transaktionsår | transaktionsmånad | transaktionsdag | transaktionsdatum |
| --- | --- | --- | --- |
| 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 | 23/09/2018 |

`transaction_date`-fältet skapades i den föregående load-satsen genom att använda `makedate()`-funktionen och skicka års-, månads- och datumfälten som funktionens argument.

Funktionen kombinerar och konverterar sedan de här värdena till ett datumfält och returnerar resultatet i form av systemvariabeln `DateFormat`.

## Exempel 2 – modifierat DateFormat

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

#### Laddningsskript och resultat

Översikt

Öppna dataladdningsredigeraren och lägg till laddningsskriptet nedan i ett nytt delavsnitt.

Laddningsskriptet innehåller:

* Samma datauppsättning och scenario som i det första exemplet.

* Ett fält `transaction_date` skapas i formatet DD/MM/YYYY utan att systemvariabeln `DateFormat` ändras.

Laddningsskript

```
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
];
```

Resultat

Ladda data och öppna ett ark. Skapa en ny tabell och lägg till dessa fält som dimensioner:

* `transaction_year`

* `transaction_month`

* `transaction_day`

* `transaction_date`

Resultattabell

| transaktionsår | transaktionsmånad | transaktionsdag | transaktionsdatum |
| --- | --- | --- | --- |
| 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 |

I det här fallet nästlas `makedate()`-funktion inuti `date()`-funktionen. Det andra argumentet i `date()`-funktionen ställer in formatet i `makedate()`-funktionens resultat till det erforderliga DD/MM/YYYY.

## Exampel 3 – Diagramobjektexempel

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

#### Laddningsskript och diagramuttryck

Översikt

Öppna dataladdningsredigeraren och lägg till laddningsskriptet nedan i ett nytt delavsnitt.

Laddningsskriptet innehåller:

* En datauppsättning som innehåller en uppsättning transaktioner för 2018 som laddas i en tabell som heter `Transactions`.

* Tillhandahållna transaktionsdatum över två fält: `year` och `month`.

Skapa ett diagramobjektmått, `transaction_date`, som returnerar ett datum i formatet MM/DD/YYYY.

Laddningsskript

```
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
];
```

Resultat

Ladda data och öppna ett ark. Skapa en ny tabell och lägg till dessa fält som dimensioner:

* `year`

* `month`

Skapa detta mått för att fastställa `transaction_date`.

`=makedate(transaction_year,transaction_month)`

Resultattabell

| transaktionsår | transaktionsmånad | transaktionsdatum |
| --- | --- | --- |
| 2018 | 08 | 08/01/2018 |
| 2018 | 09 | 09/01/2018 |

`transaction_date`-måttet skapades i den föregående load-satsen genom att använda `makedate()`-funktionen och skicka års- och månadsfälten som funktionens argument.

Funktionen kombinerar sedan dessa värden och det antagna dagsvärdet 01. De här värdena konverteras sedan till ett datumfält och returnerar resultatet i form av systemvariabeln `DateFormat`.

## Exempel 4 – Scenario

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

#### Laddningsskript och diagramuttryck

Översikt

Skapa en kalenderdatauppsättning för kalenderåret 2022.

Laddningsskript

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

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

Resultat

Resultattabell

| 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 |
| 11/01/2022 |
| 12/01/2022 |
| 13/01/2022 |
| 14/01/2022 |
| 15/01/2022 |
| 01/16/2022 |
| 17/01/2022 |
| 01/18/2022 |
| 01/19/2022 |
| 01/20/2022 |
| 2022-01-21 |
| 2022-01-22 |
| 01/23/2022 |
| 01/24/2022 |
| 01/25/2022 |
| + ytterligare 340 rader |

makedate()-funktionen skapar ett datumvärde för 31 december, 2021. recno()-funktionen tillhandahåller postnumret för den post som för tillfället laddas in i tabellen, med början från 1. Därför har den första posten datumet 1 januari 2022. Varje påföljande recno() ökar då detta datum med 1. Uttrycket är inneslutet i en date()-funktion för att konvertera värdet till ett datum. Denna process upprepas 400 gånger av autogenerate-funktionen. Slutligen kan, genom att använda en föregående laddning, ett where-villkor användas för att endast ladda datum från 2022. Skriptet genererar en kalender som innehåller alla datum under 2022.