# monthstart - fonction de script et fonction de graphique

Cette fonction renvoie une valeur correspondant à un horodatage de la première milliseconde du premier jour du mois contenant l'argument date. Le format de sortie par défaut correspond à l'argument DateFormat défini dans le script.

MonthStart(date[, period\_no])

double

Diagramme de la fonction `monthstart()`

Diagramme de la fonction `monthstart()`

Diagramme de la fonction `monthstart()`monthstart() ![Exemple de diagramme montrant comment les éléments de la fonction s'accordent pour renvoyer le résultat.](https://help.qlik.com/fr-FR/sense/May2025/Subsystems/Hub/Content/Resources/Images/scripting-functions-monthstart-general.png)

La fonction `monthstart()` détermine le mois dans lequel tombe la date. Elle renvoie ensuite un horodatage, au format date, pour la première milliseconde de ce mois-là.

Arguments

| Argument | Description |
| --- | --- |
| date | Date ou horodatage à évaluer. |
| period\_no | period\_no est un entier qui, s'il est égal à 0 ou s'il est omis, indique le mois contenant la date. Les valeurs négatives spécifiées pour period\_no indiquent les mois passés tandis que les valeurs positives désignent les mois à venir. |

## Cas d'utilisation

La fonction `monthstart()` est couramment utilisée dans le cadre d'une expression lorsque l'utilisateur souhaite que le calcul utilise la fraction du mois qui s'est écoulée jusqu'à présent. Par exemple, elle peut être utilisée pour calculer les intérêts cumulés au cours d'un mois jusqu'à une certaine date.

Exemples de fonction

| Exemple | Résultat |
| --- | --- |
| `monthstart('10/19/2001')` | Renvoie 10/01/2001. |
| `monthstart('10/19/2001', -1)` | Renvoie 09/01/2001. |

## 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 – aucun argument supplémentaire

[](https://help.qlik.com/en-US/sense/Subsystems/Hub/Content/Sense_Hub/Scripting/DateAndTimeFunctions/monthstart.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 2022, 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, `start_of_month`, qui renvoie un horodatage du début du mois au cours duquel les transactions ont eu lieu.

Script de chargement

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

Transactions:
    Load
        *,
        monthstart(date) as start_of_month,
        timestamp(monthstart(date)) as start_of_month_timestamp
        ;
Load
*
Inline
[
id,date,amount
8188,1/7/2022,17.17
8189,1/19/2022,37.23
8190,2/28/2022,88.27
8191,2/5/2022,57.42
8192,3/16/2022,53.80
8193,4/1/2022,82.06
8194,5/7/2022,40.39
8195,5/16/2022,87.21
8196,6/15/2022,95.93
8197,6/26/2022,45.89
8198,7/9/2022,36.23
8199,7/22/2022,25.66
8200,7/23/2022,82.77
8201,7/27/2022,69.98
8202,8/2/2022,76.11
8203,8/8/2022,25.12
8204,8/19/2022,46.23
8205,9/26/2022,84.21
8206,10/14/2022,96.24
8207,10/29/2022,67.67
];
```

Résultats

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

* `date`

* `start_of_month`

* `start_of_month_timestamp`

Tableau de résultats

| date | start\_of\_month | start\_of\_month\_timestamp |
| --- | --- | --- |
| 1/7/2022 | 01/01/2022 | 1/1/2022 12:00:00 AM |
| 1/19/2022 | 01/01/2022 | 1/1/2022 12:00:00 AM |
| 2/5/2022 | 02/01/2022 | 2/1/2022 12:00:00 AM |
| 2/28/2022 | 02/01/2022 | 2/1/2022 12:00:00 AM |
| 3/16/2022 | 03/01/2022 | 3/1/2022 12:00:00 AM |
| 4/1/2022 | 04/01/2022 | 4/1/2022 12:00:00 AM |
| 5/7/2022 | 05/01/2022 | 5/1/2022 12:00:00 AM |
| 5/16/2022 | 05/01/2022 | 5/1/2022 12:00:00 AM |
| 6/15/2022 | 06/01/2022 | 6/1/2022 12:00:00 AM |
| 6/26/2022 | 07/01/2022 | 6/1/2022 12:00:00 AM |
| 7/9/2022 | 07/01/2022 | 7/1/2022 12:00:00 AM |
| 7/22/2022 | 07/01/2022 | 7/1/2022 12:00:00 AM |
| 7/23/2022 | 07/01/2022 | 7/1/2022 12:00:00 AM |
| 7/27/2022 | 07/01/2022 | 7/1/2022 12:00:00 AM |
| 8/2/2022 | 08/01/2022 | 8/1/2022 12:00:00 AM |
| 8/8/2022 | 08/01/2022 | 8/1/2022 12:00:00 AM |
| 8/19/2022 | 08/01/2022 | 8/1/2022 12:00:00 AM |
| 9/26/2022 | 09/01/2022 | 9/1/2022 12:00:00 AM |
| 10/14/2022 | 10/01/2022 | 10/1/2022 12:00:00 AM |
| 10/29/2022 | 10/01/2022 | 10/1/2022 12:00:00 AM |

Le champ `start_of_month` est créé dans l'instruction preceding load via la fonction `monthstart()` et en transmettant le champ date comme argument de la fonction.

La fonction `monthstart()` identifie le mois dans lequel tombe la valeur date en renvoyant un horodatage pour la première milliseconde de ce mois.

Diagramme de la fonction `monthstart()`, exemple sans argument supplémentaire

Diagramme de la fonction `monthstart()`, exemple sans argument supplémentaire

Diagramme de la fonction `monthstart()`monthstart(), exemple sans argument supplémentaire![Diagramme montrant les résultats de l'utilisation de la fonction monthstart pour déterminer le mois au cours duquel une transaction a eu lieu.](https://help.qlik.com/fr-FR/sense/May2025/Subsystems/Hub/Content/Resources/Images/scripting-functions-monthstart-example-no-add-arg.png)

La transaction 8192 a eu lieu le 16 mars. La fonction `monthstart()` renvoie la première milliseconde de ce mois, soit le 1er mars à 12:00:00 AM.

## Exemple 2 – period\_no

[](https://help.qlik.com/en-US/sense/Subsystems/Hub/Content/Sense_Hub/Scripting/DateAndTimeFunctions/monthstart.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, `previous_month_start`, qui renvoie l'horodatage du début du mois avant la transaction.

Script de chargement

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

Transactions:
    Load
        *,
        monthstart(date,-1) as previous_month_start,
        timestamp(monthstart(date,-1)) as previous_month_start_timestamp
        ;
Load
*
Inline
[
id,date,amount
8188,1/7/2022,17.17
8189,1/19/2022,37.23
8190,2/28/2022,88.27
8191,2/5/2022,57.42
8192,3/16/2022,53.80
8193,4/1/2022,82.06
8194,5/7/2022,40.39
8195,5/16/2022,87.21
8196,6/15/2022,95.93
8197,6/26/2022,45.89
8198,7/9/2022,36.23
8199,7/22/2022,25.66
8200,7/23/2022,82.77
8201,7/27/2022,69.98
8202,8/2/2022,76.11
8203,8/8/2022,25.12
8204,8/19/2022,46.23
8205,9/26/2022,84.21
8206,10/14/2022,96.24
8207,10/29/2022,67.67
];
```

Résultats

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

* `date`

* `previous_month_start`

* `previous_month_start_timestamp`

Tableau de résultats

| date | previous\_month\_start | previous\_month\_start\_timestamp |
| --- | --- | --- |
| 1/7/2022 | 12/01/2021 | 12/1/2021 12:00:00 AM |
| 1/19/2022 | 12/01/2021 | 12/1/2021 12:00:00 AM |
| 2/5/2022 | 01/01/2022 | 1/1/2022 12:00:00 AM |
| 2/28/2022 | 01/01/2022 | 1/1/2022 12:00:00 AM |
| 3/16/2022 | 02/01/2022 | 2/1/2022 12:00:00 AM |
| 4/1/2022 | 03/01/2022 | 3/1/2022 12:00:00 AM |
| 5/7/2022 | 04/01/2022 | 4/1/2022 12:00:00 AM |
| 5/16/2022 | 04/01/2022 | 4/1/2022 12:00:00 AM |
| 6/15/2022 | 05/01/2022 | 5/1/2022 12:00:00 AM |
| 6/26/2022 | 05/01/2022 | 5/1/2022 12:00:00 AM |
| 7/9/2022 | 06/01/2022 | 6/1/2022 12:00:00 AM |
| 7/22/2022 | 06/01/2022 | 6/1/2022 12:00:00 AM |
| 7/23/2022 | 06/01/2022 | 6/1/2022 12:00:00 AM |
| 7/27/2022 | 06/01/2022 | 6/1/2022 12:00:00 AM |
| 8/2/2022 | 07/01/2022 | 7/1/2022 12:00:00 AM |
| 8/8/2022 | 07/01/2022 | 7/1/2022 12:00:00 AM |
| 8/19/2022 | 07/01/2022 | 7/1/2022 12:00:00 AM |
| 9/26/2022 | 08/01/2022 | 8/1/2022 12:00:00 AM |
| 10/14/2022 | 09/01/2022 | 9/1/2022 12:00:00 AM |
| 10/29/2022 | 09/01/2022 | 9/1/2022 12:00:00 AM |

Dans cet exemple, étant donné que la valeur `period_no` de -1 a été utilisée comme argument de décalage dans la fonction `monthstart()`, la fonction commence par identifier le mois au cours duquel les transactions ont lieu. Elle décale ensuite d'un mois en arrière et identifie la première milliseconde de ce mois-là.

Diagramme de la fonction `monthstart()`, exemple period\_no

Diagramme de la fonction `monthstart()`, exemple period\_no

Diagramme de la fonction `monthstart()`monthstart(), exemple period\_no![Diagramme montrant les résultats de l'utilisation de la fonction monthstart pour déterminer le mois au cours duquel une transaction a eu lieu.](https://help.qlik.com/fr-FR/sense/May2025/Subsystems/Hub/Content/Resources/Images/scripting-functions-monthstart-example-period-no.png)

La transaction 8192 a eu lieu le 16 mars. La fonction `monthstart()` identifie que le mois avant la transaction était le mois de février. Elle renvoie alors la première milliseconde de ce mois, le 1er février à 12:00:00 AM.

## Exemple 3 – exemple objet graphique

[](https://help.qlik.com/en-US/sense/Subsystems/Hub/Content/Sense_Hub/Scripting/DateAndTimeFunctions/monthstart.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 à un nouvel onglet.

Le script de chargement contient le même jeu de données et le même scénario que ceux du premier exemple.

Cependant, dans cet exemple, le même jeu de données est chargé dans l'application. Le calcul qui renvoie un horodatage correspondant au début du mois de réalisation des transactions est créé sous forme de mesure dans un objet graphique de l'application.

Script de chargement

```

SET DateFormat='MM/DD/YYYY';
 
Transactions:
Load
*
Inline
[
id,date,amount
8188,1/7/2022,17.17
8189,1/19/2022,37.23
8190,2/28/2022,88.27
8191,2/5/2022,57.42
8192,3/16/2022,53.80
8193,4/1/2022,82.06
8194,5/7/2022,40.39
8195,5/16/2022,87.21
8196,6/15/2022,95.93
8197,6/26/2022,45.89
8198,7/9/2022,36.23
8199,7/22/2022,25.66
8200,7/23/2022,82.77
8201,7/27/2022,69.98
8202,8/2/2022,76.11
8203,8/8/2022,25.12
8204,8/19/2022,46.23
8205,9/26/2022,84.21
8206,10/14/2022,96.24
8207,10/29/2022,67.67
];
```

Résultats

Chargez les données et ouvrez une feuille. Créez une table et ajoutez ce champ comme dimension : `date`.

Pour calculer la date de début du mois d'une transaction, créez les mesures suivantes :

* `=monthstart(date)`

* `=timestamp(monthstart(date))`

Tableau de résultats

| date | =monthstart(date) | =timestamp(monthstart(date)) |
| --- | --- | --- |
| 10/14/2022 | 10/01/2022 | 10/1/2022 12:00:00 AM |
| 10/29/2022 | 10/01/2022 | 10/1/2022 12:00:00 AM |
| 9/26/2022 | 09/01/2022 | 9/1/2022 12:00:00 AM |
| 8/2/2022 | 08/01/2022 | 8/1/2022 12:00:00 AM |
| 8/8/2022 | 08/01/2022 | 8/1/2022 12:00:00 AM |
| 8/19/2022 | 08/01/2022 | 8/1/2022 12:00:00 AM |
| 7/9/2022 | 07/01/2022 | 7/1/2022 12:00:00 AM |
| 7/22/2022 | 07/01/2022 | 7/1/2022 12:00:00 AM |
| 7/23/2022 | 07/01/2022 | 7/1/2022 12:00:00 AM |
| 7/27/2022 | 07/01/2022 | 7/1/2022 12:00:00 AM |
| 6/15/2022 | 06/01/2022 | 6/1/2022 12:00:00 AM |
| 6/26/2022 | 06/01/2022 | 6/1/2022 12:00:00 AM |
| 5/7/2022 | 05/01/2022 | 5/1/2022 12:00:00 AM |
| 5/16/2022 | 05/01/2022 | 5/1/2022 12:00:00 AM |
| 4/1/2022 | 04/01/2022 | 4/1/2022 12:00:00 AM |
| 3/16/2022 | 03/01/2022 | 3/1/2022 12:00:00 AM |
| 2/5/2022 | 02/01/2022 | 2/1/2022 12:00:00 AM |
| 2/28/2022 | 02/01/2022 | 2/1/2022 12:00:00 AM |
| 1/7/2022 | 01/01/2022 | 1/1/2022 12:00:00 AM |
| 1/19/2022 | 01/01/2022 | 1/1/2022 12:00:00 AM |

La mesure `start_of_month` est créée dans l'objet graphique via la fonction `monthstart()` et en transmettant le champ date comme argument de la fonction.

La fonction `monthstart()` identifie le mois dans lequel tombe la valeur date en renvoyant un horodatage pour la première milliseconde de ce mois.

Diagramme de la fonction `monthstart()`, exemple objet graphique

Diagramme de la fonction `monthstart()`, exemple objet graphique

Diagramme de la fonction `monthstart()`monthstart(), exemple objet graphique![Diagramme montrant les résultats de l'utilisation de la fonction monthstart pour déterminer le mois au cours duquel une transaction a eu lieu.](https://help.qlik.com/fr-FR/sense/May2025/Subsystems/Hub/Content/Resources/Images/scripting-functions-monthstart-example-chart-object.png)

La transaction 8192 a eu lieu le 16 mars. La fonction `monthstart()` identifie que la transaction a eu lieu en mars et renvoie la première milliseconde de ce mois, soit le 1er mars à 12:00:00 AM.

## Exemple 4 – scénario

[](https://help.qlik.com/en-US/sense/Subsystems/Hub/Content/Sense_Hub/Scripting/DateAndTimeFunctions/monthstart.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 soldes de prêts, chargé dans une table appelée Loans.

* Données constituées des ID des prêts, du solde au début du mois et du taux d'intérêt simple facturé pour chaque prêt par an.

L'utilisateur final souhaite un objet graphique qui affiche, par ID de prêt, les intérêts actuels qui ont été accumulés pour chaque prêt au cours du mois jusqu'à la date du jour.

Script de chargement

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

Loans:
Load
*
Inline
[
loan_id,start_balance,rate
8188,$10000.00,0.024
8189,$15000.00,0.057
8190,$17500.00,0.024
8191,$21000.00,0.034
8192,$90000.00,0.084
];
```

Résultats

Procédez comme suit :

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

   * loan\_id

   * start\_balance

2. Ensuite, pour calculer les intérêts accumulés, créez une mesure :

   =start\_balance\*(rate\*(today(1)-monthstart(today(1)))/365)

3. Définissez le Formatage des nombres des mesures sur Devise.

Tableau de résultats

| loan\_id | start\_balance | =start\_balance\*(rate\*(today(1)-monthstart(today(1)))/365) |
| --- | --- | --- |
| 8188 | $10000.00 | $16.44 |
| 8189 | $15000.00 | $58.56 |
| 8190 | $17500.00 | $28.77 |
| 8191 | $21000.00 | $48.90 |
| 8192 | $90000.00 | $517.81 |

Si on utilise la date d'aujourd'hui comme seul argument, la fonction monthstart() renvoie la date de début du mois en cours. En soustrayant ce résultat de la date actuelle, l'expression renvoie le nombre de jours qui se sont écoulés jusqu'à présent ce mois.

Cette valeur est ensuite multipliée par le taux d'intérêt et divisée par 365 pour obtenir le taux d'intérêt effectif encouru pour cette période. Le résultat est ensuite multiplié par le solde initial du prêt pour renvoyer les intérêts cumulés jusqu'à présent ce mois.