# daystart - funzione dello script e del grafico

Questa funzione restituisce un valore corrispondente a un indicatore temporale con il primo millisecondo del giorno contenuto nell'argomento time. Il formato di output predefinito sarà il formato TimestampFormat impostato nello script.

Sintassi:

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

Tipo di dati restituiti: duale

Argomenti

| Argomento | Descrizione |
| --- | --- |
| time | Il timestamp da valutare. |
| period\_no | period\_no è un numero intero o un'espressione la cui risoluzione è un numero intero, in cui il valore 0 indica il giorno che contiene il valore time. I valori negativi di period\_no indicano i giorni precedenti, mentre i valori positivi indicano i giorni successivi. |
| day\_start | Per specificare che i giorni non iniziano a mezzanotte, indicare un differimento come frazione di un giorno in day\_start. Ad esempio, 0.125 per denotare 3:00 AM.<br><br>In altre parole, per creare l'offset dividere l'ora di inizio per 24 ore. Ad esempio, per un giorno che inizia alle 7:00 del mattino, utilizzare la frazione 7/24. |

## Casi di utilizzo

La funzione `daystart()` viene comunemente utilizzata come parte di un'espressione quando l'utente desidera che il calcolo utilizzi la frazione del giorno trascorsa finora. Ad esempio, può essere utilizzata per calcolare il totale dei salari guadagnati dai dipendenti nella giornata fino a quel momento.

Questi esempi utilizzano il formato timestamp `'M/D/YYYY h:mm:ss[.fff] TT'`. Il formato timestamp viene specificato nell'istruzione `SET TimeStamp` sopra lo script di caricamento dei dati. Modificare il formato negli esempi in base alle proprie necessità.

Esempi di funzioni

| Esempio | Risultato |
| --- | --- |
| `daystart('01/25/2013 4:45:00 PM')` | Restituisce 1/25/2013 12:00:00 AM. |
| `daystart('1/25/2013 4:45:00 PM', -1)` | Restituisce 1/24/2013 12:00:00 AM. |
| `daystart('1/25/2013 16:45:00',0,0.5<br>)` | Restituisce 1/25/2013 12:00:00 PM. |

## Impostazioni locali

Se non diversamente specificato, gli esempi di questo argomento utilizzano il seguente formato di data: MM/GG/AAAA. Il formato della data viene specificato nell'istruzione `SET DateFormat` nello script di caricamento dei dati. La formattazione predefinita della data potrebbe essere diversa nel proprio sistema, a causa delle impostazioni regionali e di altri fattori. È possibile modificare i formati degli esempi seguenti in base alle proprie esigenze. In alternativa, è possibile modificare i formati nel proprio script di caricamento per adattarli a questi esempi.

Le impostazioni regionali predefinite delle app si basano sulle impostazioni regionali del sistema del computer o del server in cui risulta installato Qlik Sense. Se il server Qlik Sense a cui si accede è impostato in Svezia, l'editor caricamento dati utilizzerà le impostazioni regionali svedesi per date, ora e valuta. Queste impostazioni di formato regionale non riguardano la lingua visualizzata nell'interfaccia utente Qlik Sense. Qlik Sense verrà visualizzato nella stessa lingua del browser utilizzato.

## Esempio 1 – Esempio semplice

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

#### Script di caricamento e risultati

Panoramica

Aprire l'Editor caricamento dati e aggiungere lo script di caricamento sotto in una nuova sezione.

Lo script di caricamento contiene:

* Un set di dati semplice contenente un elenco di date, caricato in una tabella denominata `Calendar`.

* Viene utilizzata la variabile di sistema `TimeStampFormat` predefinita (`(M/D/YYYY h:mm:ss[.fff] TT`).

* Un caricamento precedente che crea un campo aggiuntivo, denominato `SOD_timestamp`, mediante la funzione `daystart()`.

Oltre alla data, non viene fornito alla funzione alcun parametro aggiuntivo.

Script di caricamento

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

Risultati

Caricare i dati e aprire un foglio. Creare una nuova tabella e aggiungere tali campi come dimensioni:

* `date`

* `SOD_timestamp`

Tabella dei risultati

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

Come appare nella tabella sopra, la fine del timestamp giorno viene generata per ciascuna data nel nostro set di dati. Il timestamp è nel formato della variabile di sistema `TimestampFormat M/D/YYYY h:mm:ss[.fff] TT`.

## Esempio 2 - period\_no

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

#### Script di caricamento e risultati

Panoramica

Aprire l'Editor caricamento dati e aggiungere lo script di caricamento sotto in una nuova sezione.

Lo script di caricamento contiene:

* Un set di dati contenente le multe per divieto di sosta, che viene caricato in una tabella denominata `Fines`. Il set di dati include i seguenti campi:

  * `id`

  * `due_date`

  * `number_plate`

  * `amount`

* Un caricamento precedente che utilizza la funzione `daystart()` e fornisce tutti e tre i parametri: `time`, `period_no` e `day_start`. Questo caricamento crea i seguenti due nuovi campi data:

  * Un campo di data `early_repayment_period`, che inizia sette giorni prima della scadenza del pagamento.

  * Un campo di data `late_penalty_period`, che inizia 14 giorni dopo la scadenza del pagamento.

Script di caricamento

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

Risultati

Caricare i dati e aprire un foglio. Creare una nuova tabella e aggiungere tali campi come dimensioni:

* `due_date`

* `early_repayment_period`

* `late_penalty_period`

Tabella dei risultati

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

I valori dei nuovi campi sono in `TimestampFormat M/DD/YYYY tt`. Essendo stata usata la funzione `daystart()`, i valori timestamp sono tutti al primo millisecondo del giorno.

I valori del periodo di rimborso anticipato sono sette giorni prima della data di scadenza, in quanto il secondo argomento passato nella funzione `  daystart() ` è negativo.

I valori del periodo di rimborso tardivo sono 14 giorni dopo la data di scadenza, in quanto il secondo argomento passato nella funzione `daystart()` è positivo.

## Esempio 3 – day\_start

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

#### Script di caricamento e risultati

Panoramica

Aprire l'Editor caricamento dati e aggiungere lo script di caricamento sotto in una nuova sezione.

Lo script di caricamento contiene:

* Vengono utilizzati lo stesso set di dati e lo stesso scenario del precedente esempio.

* Lo stesso caricamento precedente dell'esempio precedente.

In questo esempio, abbiamo impostato la giornata lavorativa in modo che inizi e termini alle 7:00 del mattino di ogni giorno.

Script di caricamento

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

Risultati

Caricare i dati e aprire un foglio. Creare una nuova tabella e aggiungere tali campi come dimensioni:

* `due_date`

* `early_repayment_period`

* `late_penalty_period`

Tabella dei risultati

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

Le date ora hanno un timestamp di 7:00 AM perché il valore dell'argomento `day_start` passato alla funzione `daystart()` è 7/24. In questo modo si imposta l'inizio del giorno alle 7:00 AM.

Poiché il campo `due_date` non ha un timestamp, viene trattato come le 12:00 AM, che quindi fa ancora parte del giorno precedente, dato che i giorni iniziano e finiscono alle 7:00 del mattino. Pertanto, il periodo di rimborso anticipato per una multa in scadenza l'11 febbraio inizia il 3 febbraio alle ore 7:00.

## Esempio 4 – Esempio di oggetto grafico

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

#### Script di caricamento ed espressione del grafico

Panoramica

Aprire l'Editor di caricamento dati e aggiungere lo script di caricamento sotto in una nuova scheda.

Questo esempio utilizza lo stesso set di dati e lo stesso scenario dell'esempio precedente.

Tuttavia, solo la tabella Fines originale viene caricata nell'applicazione, mentre i due valori aggiuntivi delle scadenze vengono calcolati in un oggetto grafico.

Script di caricamento

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

Risultati

Procedere come indicato di seguito:

1. Caricare i dati e aprire un foglio. Creare una nuova tabella e aggiungere questo campo come dimensione: due\_date.

2. Per creare il campo early\_repayment\_period, creare la seguente misura:

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

3. Per creare il campo late\_penalty\_period, creare la seguente misura:

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

Tabella dei risultati

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

I valori dei nuovi campi sono in TimestampFormat M/D/YYYY h:mm:ss[.fff] TT. Essendo stata usata la funzione daystart(), i valori timestamp corrispondono tutti al primo millisecondo del giorno.

I valori del periodo di rimborso anticipato sono sette giorni prima della data di scadenza, poiché il secondo argomento passato nella funzione daystart() era negativo.

I valori del periodo di rimborso tardivo sono 14 giorni dopo la data di scadenza, poiché il secondo argomento passato nella funzione daystart() era positivo.

Le date hanno un timestamp corrispondente alle 7:00 AM perché il valore del terzo argomento passato alla funzione daystart(), day\_start, era 7/24.