# daystart - Fonction de script et de graphique

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

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

double

Arguments

| Argument | Description |
| --- | --- |
| time | Horodatage à évaluer. |
| period\_no | period\_no est un entier ou une expression qui aboutit à un entier, où la valeur 0 indique le jour contenant time. Les valeurs négatives de l'argument period\_no indiquent les jours passés tandis que les valeurs positives désignent les jours à venir. |
| day\_start | Pour spécifier que les jours ne commencent pas à minuit, indiquez un décalage sous forme de fraction d'un jour dans day\_start. Par exemple, 0.125 signifie 3 h du matin.<br><br>En d'autres termes, pour créer le décalage, divisez l'heure de début par 24 heures. Par exemple, pour qu'une journée commence à 7h00 du matin, utilisez la fraction 7/24. |

## Cas d'utilisation

La fonction `daystart()` est couramment utilisée dans le cadre d'une expression lorsque l'utilisateur souhaite que le calcul utilise la fraction du jour qui s'est écoulée jusqu'à présent. Par exemple, cela peut permettre de calculer le total des salaires touchés par les employés jusqu'à ce jour.

Ces exemples utilisent le format d'horodatage `'M/D/YYYY h:mm:ss[.fff] TT'`. Le format d'horodatage est indiqué dans l'instruction `SET TimeStamp` 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 |
| --- | --- |
| `daystart('01/25/2013 4:45:00 PM')` | Renvoie 1/25/2013 12:00:00 AM. |
| `daystart('1/25/2013 4:45:00 PM', -1)` | Renvoie 1/24/2013 12:00:00 AM. |
| `daystart('1/25/2013 16:45:00',0,0.5<br>)` | Renvoie 1/25/2013 12:00:00 PM. |

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

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

* Un jeu de données simple contenant une liste de dates, qui est chargé dans une table nommée `Calendar`.

* La variable système `TimeStampFormat` par défaut (`(M/D/YYYY h:mm:ss[.fff] TT`) est utilisée.

* Un instruction preceding load qui crée un champ supplémentaire, appelé `SOD_timestamp`, via la fonction `daystart()`.

Outre la date, aucun paramètre supplémentaire n'est fourni à la fonction.

Script de chargement

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

Résultats

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

* `date`

* `SOD_timestamp`

Tableau de résultats

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

Comme le montre le tableau ci-dessus, l'horodatage de fin de journée est généré pour chaque date de notre jeu de données. L'horodatage se présente au format de la variable système `TimestampFormat M/D/YYYY h:mm:ss[.fff] TT`.

## Exemple 2 - period\_no

[](https://help.qlik.com/en-US/sense/Subsystems/Hub/Content/Sense_Hub/Scripting/DateAndTimeFunctions/daystart.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 des amendes de stationnement, qui est chargé dans une table nommée `Fines`. Le jeu de données inclut les champs suivants :

  * `id`

  * `due_date`

  * `number_plate`

  * `amount`

* Chargement précédent utilisant la fonction `daystart()` et fournissant l'ensemble des trois paramètres suivants : `time`, `period_no` et `day_start`. Ce chargement précédent crée les deux nouveaux champs de date suivants :

  * Un champ de date `early_repayment_period`, qui commence sept jours avant la date d'échéance de paiement.

  * Un champ de date `late_penalty_period`, qui commence quatorze jours après la date d'échéance de paiement.

Script de chargement

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

Résultats

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

* `due_date`

* `early_repayment_period`

* `late_penalty_period`

Tableau de résultats

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

Les valeurs des nouveaux champs se présentent au format `TimestampFormat M/DD/YYYY tt`. Étant donné que la fonction `daystart()` a été utilisée, les valeurs d'horodatage indiquent toutes la première milliseconde de la journée.

Les valeurs de période de remboursement anticipé sont sept jours avant la date d'échéance, car le deuxième argument transmis dans la fonction `  daystart() ` est négatif.

Les valeurs de période de remboursement tardif sont quatorze jours après la date d'échéance, car le deuxième argument transmis dans la fonction `daystart()` est positif.

## Exemple 3 - day\_start

[](https://help.qlik.com/en-US/sense/Subsystems/Hub/Content/Sense_Hub/Scripting/DateAndTimeFunctions/daystart.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 de l'exemple précédent.

* Même chargement précédent que celui de l'exemple précédent.

Dans cet exemple, nous décidons que la journée de travail commence et se termine tous les jours à 7h00 le matin.

Script de chargement

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

Résultats

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

* `due_date`

* `early_repayment_period`

* `late_penalty_period`

Tableau de résultats

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

L'horodatage des dates est maintenant de 7h00 du matin, car la valeur de l'argument `day_start` transmise dans la fonction `daystart()` était 7/24. Cela fixe le début de la journée à 7h00 du matin.

Étant donné que le champ `due_date` n'a pas d'horodatage, il est traité comme minuit (12:00 AM), qui fait par conséquent encore partie de la journée précédente, puisque les journées commencent et se terminent à 7h00 du matin. Par conséquent, la période de remboursement anticipé d'une amende due le 11 février commence le 3 février à 7h00 du matin.

## Exemple 4 - exemple objet graphique

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

Cet exemple utilise le même jeu de données et le même scénario que ceux de l'exemple précédent.

Cependant, seule la table Fines d'origine est chargée dans l'application, avec les deux valeurs de dates d'échéance supplémentaires calculées dans un objet graphique.

Script de chargement

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

Résultats

Procédez comme suit :

1. Chargez les données et ouvrez une feuille. Créez une table et ajoutez ce champ comme dimension : due\_date.

2. Pour créer le champ early\_repayment\_period, créez la mesure suivante.

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

3. Pour créer le champ late\_penalty\_period, créez la mesure suivante :

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

Tableau de résultats

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

Les valeurs des nouveaux champs se présentent au format TimestampFormat M/D/YYYY h:mm:ss[.fff] TT. Étant donné que la fonction daystart() a été utilisée, les valeurs d'horodatage correspondent à la première milliseconde de la journée.

Les valeurs de période de remboursement anticipé sont sept jours avant la date d'échéance, car le deuxième argument transmis dans la fonction daystart() était négatif.

Les valeurs de période de remboursement tardif sont quatorze jours après la date d'échéance, car le deuxième argument transmis dans la fonction daystart() était positif.

L'horodatage des dates est de 7h00 du matin, car la valeur du troisième argument transmise dans la fonction daystart(), day\_start, était 7/24.