# makedate - fonction de script et fonction de graphique

Cette fonction renvoie une date calculée à partir de l'année YYYY, du mois MM et du jour DD.

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

double

Arguments

| Argument | Description |
| --- | --- |
| YYYY | Année sous forme d'entier. |
| MM | Mois sous forme d'entier. Si aucun mois n'est spécifié, 1 (janvier) est utilisé. |
| DD | Jour sous forme d'entier. Si aucun jour n'est spécifié, la fonction utilise 1 (le premier). |

## Cas d'utilisation

La fonction `makedate()` est généralement utilisée dans le script pour la génération de données afin de produire un calendrier. Cela peut également être utilisé lorsque le champ date n'est pas directement disponible sous forme de date, mais qu'il doit subir des transformations pour en extraire les composants year, (année) month (mois) et day (jour).

Ces exemples utilisent le format de date MM/DD/YYYY. Le format de date est indiqué dans l'instruction `SET DateFormat` située en haut de votre script de chargement de données. Modifiez le format utilisé dans les exemples en fonction de vos exigences.

Exemples de fonction

| Exemple | Résultat |
| --- | --- |
| `makedate(2012)` | Renvoie 01/01/2012. |
| `makedate(12)` | Renvoie 01/01/2012. |
| `makedate(2012,12)` | Renvoie 12/01/2012. |
| `makedate(2012,2,14)` | Renvoie 02/14/2012. |

## Paramètres régionaux

Sauf indication contraire, les exemples de cette rubrique utilisent le format de date suivant : MM/JJ/AAAA. Le format de date est indiqué dans l'instruction `SET DateFormat` de votre script de chargement de données. Le format de date par défaut peut être différent dans votre système en raison de vos paramètres régionaux et d'autres facteurs. Vous pouvez modifier les formats utilisés dans les exemples ci-dessous en fonction de vos besoins. Ou vous pouvez modifier les formats utilisés dans votre script de chargement pour qu'ils correspondent à ceux de ces exemples.

Les paramètres régionaux par défaut des applications sont basés sur les paramètres système régionaux de l'ordinateur ou du serveur sur lequel Qlik Sense est installé. Si le serveur Qlik Sense auquel vous accédez est configuré sur la Suède, l'éditeur de chargement de données utilisera les paramètres régionaux suédois pour les dates, l'heure et la devise. Ces paramètres de format régionaux ne sont pas liés à la langue affichée dans l'interface utilisateur Qlik Sense. Qlik Sense sera affiché dans la même langue que celle du navigateur que vous utilisez.

## Exemple 1 – exemple de base

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

#### Script de chargement et résultats

Vue d'ensemble

Ouvrez l'éditeur de chargement de données et ajoutez le script de chargement ci-dessous à une nouvelle section.

Le script de chargement contient :

* Jeu de données contenant un ensemble de transactions pour 2018, chargé dans une table appelée `Transactions`.

* Champ de date fourni dans la variable système `DateFormat` au format (MM/DD/YYYY).

* Création d'un champ, `transaction_date`, qui renvoie une date au format MM/DD/YYYY.

Script de chargement

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

Résultats

Chargez les données et ouvrez une feuille. Créez une table et ajoutez ces champs comme dimensions :

* `transaction_year`

* `transaction_month`

* `transaction_day`

* `transaction_date`

Tableau de résultats

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

Le champ `transaction_date` est créé dans l'instruction preceding load via la fonction `makedate()` et en transmettant les champs year, month et day comme arguments de la fonction.

La fonction combine ensuite ces valeurs et les convertit en un champ date, renvoyant les résultats au format de la variable système `DateFormat`.

## Exemple 2 – DateFormat modifié

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

#### Script de chargement et résultats

Vue d'ensemble

Ouvrez l'éditeur de chargement de données et ajoutez le script de chargement ci-dessous à une nouvelle section.

Le script de chargement contient :

* Même jeu de données et même scénario que ceux du premier exemple.

* Création d'un champ, `transaction_date`, au format DD/MM/YYYY, sans modifier la variable système `DateFormat`.

Script de chargement

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

Résultats

Chargez les données et ouvrez une feuille. Créez une table et ajoutez ces champs comme dimensions :

* `transaction_year`

* `transaction_month`

* `transaction_day`

* `transaction_date`

Tableau de résultats

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

Dans cet exemple, la fonction `makedate()` est imbriquée dans la fonction `date()`. Le deuxième argument de la fonction `date()` définit le format des résultats de la fonction `makedate()` sur le format DD/MM/YYYY requis.

## Exemple 3 – exemple objet graphique

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

#### Script de chargement et expression de graphique

Vue d'ensemble

Ouvrez l'éditeur de chargement de données et ajoutez le script de chargement ci-dessous à une nouvelle section.

Le script de chargement contient :

* Jeu de données contenant un ensemble de transactions pour 2018, chargé dans une table appelée `Transactions`.

* Dates de transaction fournies sur deux champs : `year` et `month`.

Créez une mesure d'objet graphique, `transaction_date`, qui renvoie une date au format MM/DD/YYYY.

Script de chargement

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

Résultats

Chargez les données et ouvrez une feuille. Créez une table et ajoutez ces champs comme dimensions :

* `year`

* `month`

Pour déterminer la valeur `transaction_date`, créez la mesure suivante :

`=makedate(transaction_year,transaction_month)`

Tableau de résultats

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

La mesure `transaction_date` est créée dans l'objet graphique via la fonction `makedate()` et en transmettant les champs year et month comme arguments de la fonction.

La fonction combine ensuite ces valeurs ainsi que la valeur day supposée égale à 01. Ces valeurs sont ensuite converties en un champ date, renvoyant les résultats au format de la variable système `DateFormat`.

## Exemple 4 – scénario

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

#### Script de chargement et expression de graphique

Vue d'ensemble

Créez un jeu de données Calendar pour l'année civile 2022.

Script de chargement

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

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

Résultats

Tableau de résultats

| date |
| --- |
| 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 lignes supplémentaires |

La fonction makedate() crée une valeur date pour le 31 décembre 2021. La fonction recno() fournit le numéro d'enregistrement de l'enregistrement en cours de chargement dans la table, en commençant par 1. Par conséquent, le premier enregistrement porte la date du 1er janvier 2022. Chaque valeur recno() successive incrémentera ensuite cette date de 1. Cette expression est imbriquée dans une fonction date() afin de convertir la valeur en date. La fonction autogenerate répète ce processus 400 fois. Pour finir, via un chargement précédent, il est possible d'utiliser une condition where pour charger uniquement les dates de l'année 2022. Ce script génère un calendrier contenant chaque date en 2022.