# monthstart - funzione dello script e del grafico

Questa funzione restituisce un valore corrispondente a un indicatore temporale recante il primo millisecondo del primo giorno del mese contenente date. Il formato di output predefinito sarà il formato DateFormat impostato nello script.

Sintassi:

MonthStart(date[, period\_no])

Tipo di dati restituiti: duale

Schema della funzione `monthstart()`.

Schema della funzione `monthstart()`.

Schema della funzione `monthstart()`monthstart(). ![Schema esemplificativo di come gli elementi della funzione collaborino per restituire il risultato.](https://help.qlik.com/it-IT/sense/November2024/Subsystems/Hub/Content/Resources/Images/scripting-functions-monthstart-general.png)

La funzione `monthstart()` determina in quale mese cade la data. Restituisce quindi un timestamp, in formato data, per il primo millisecondo di quel mese.

Argomenti

| Argomento | Descrizione |
| --- | --- |
| date | La data o la data e ora da valutare. |
| period\_no | period\_no è un numero intero che, se corrisponde a 0 o viene omesso, indica il mese contenente date. I valori negativi di period\_no indicano i mesi precedenti, mentre i valori positivi indicano i mesi successivi. |

## Casi di utilizzo

La funzione `monthstart()` viene comunemente utilizzata come parte di un'espressione quando l'utente desidera che il calcolo utilizzi la frazione del mese trascorsa finora. Ad esempio, può essere utilizzato per calcolare gli interessi accumulati in un mese fino a una certa data.

Esempi di funzioni

| Esempio | Risultato |
| --- | --- |
| `monthstart('10/19/2001')` | Restituisce 10/01/2001. |
| `monthstart('10/19/2001', -1)` | Restituisce 09/01/2001. |

## 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 – Nessun argomento aggiuntivo

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

#### Script di caricamento e risultati

Panoramica

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

Lo script di caricamento contiene:

* Un set di dati contenente un insieme di transazioni per il 2022, caricato in una tabella denominata '`Transactions`'.

* Il campo della data fornito nel formato della variabile di sistema `DateFormat` (MM/GG/AAAA).

* La creazione di un campo, `start_of_month`, che restituisce un timestamp per l'inizio del mese in cui sono avvenute le transazioni.

Script di caricamento

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

Risultati

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

* `date`

* `start_of_month`

* `start_of_month_timestamp`

Tabella dei risultati

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

Il campo '`start_of_month`' viene creato nell'istruzione di caricamento precedente mediante l'uso della funzione `monthstart()` e trasferendo il campo data come argomento della funzione.

La funzione `monthstart()` identifica in quale mese cade il valore della data, restituendo un timestamp per il primo millisecondo di quel mese.

Schema della funzione `monthstart()`, esempio senza argomenti aggiuntivi

Schema della funzione `monthstart()`, esempio senza argomenti aggiuntivi

Schema della funzione `monthstart()`monthstart(), esempio senza argomenti aggiuntivi![Schema che mostra i risultati dell'utilizzo della funzione monthstart per determinare il mese in cui è avvenuta una transazione.](https://help.qlik.com/it-IT/sense/November2024/Subsystems/Hub/Content/Resources/Images/scripting-functions-monthstart-example-no-add-arg.png)

La transazione 8192 è avvenuta il 16 marzo. La funzione `monthstart()` restituisce il primo millisecondo di quel mese, ovvero il 1° marzo alle ore 12:00:00 AM.

## Esempio 2 – period\_no

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

#### Script di caricamento e risultati

Panoramica

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

Lo script di caricamento contiene:

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

* La creazione di un campo, `previous_month_start`, che restituisce il timestamp dell'inizio del mese precedente la transazione.

Script di caricamento

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

Risultati

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

* `date`

* `previous_month_start`

* `previous_month_start_timestamp`

Tabella dei risultati

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

In questo caso, poiché il valore `period_no` di -1 è stato utilizzato come argomento offset nella funzione `monthstart()`, la funzione per prima cosa identifica il mese in cui avvengono le transazioni. Si sposta poi un mese prima e identifica il millisecondo iniziale di tale mese.

Schema della funzione `monthstart()`, esempio di period\_no

Schema della funzione `monthstart()`, esempio di period\_no

Schema della funzione `monthstart()`monthstart(), esempio di period\_no![Schema che mostra i risultati dell'utilizzo della funzione monthstart per determinare il mese in cui è avvenuta una transazione.](https://help.qlik.com/it-IT/sense/November2024/Subsystems/Hub/Content/Resources/Images/scripting-functions-monthstart-example-period-no.png)

La transazione 8192 è avvenuta il 16 marzo. La funzione `monthstart()` identifica che il mese precedente la transazione è avvenuta in febbraio. Quindi restituisce il primo millisecondo di quel mese, il 1° febbraio alle 12:00:00.

## Esempio 3 - Esempio di oggetto grafico

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

Lo script di caricamento contiene lo stesso set di dati e lo stesso scenario del primo esempio.

Tuttavia, in questo esempio, il set di dati invariato viene caricato nell'applicazione. Il calcolo che restituisce un timestamp per l'inizio del mese in cui sono avvenute le transazioni viene creato come misura in un oggetto grafico dell'applicazione.

Script di caricamento

```

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

Risultati

Caricare i dati e aprire un foglio. Creare una nuova tabella e aggiungere questo campo come dimensione: `date`.

Per calcolare la data di inizio del mese in cui avviene una transazione, creare le seguenti misure:

* `=monthstart(date)`

* `=timestamp(monthstart(date))`

Tabella dei risultati

| 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 misura `start_of_month` viene creata nell'oggetto grafico mediante l'utilizzo della funzione `monthstart()` e trasferendo il campo data come argomento della funzione.

La funzione `monthstart()` identifica in quale mese cade il valore della data, restituendo un timestamp per il primo millisecondo di quel mese.

Schema della funzione `monthstart()`, esempio di oggetto grafico

Schema della funzione `monthstart()`, esempio di oggetto grafico

Schema della funzione `monthstart()`monthstart(), esempio di oggetto grafico![Schema che mostra i risultati dell'utilizzo della funzione monthstart per determinare il mese in cui è avvenuta una transazione.](https://help.qlik.com/it-IT/sense/November2024/Subsystems/Hub/Content/Resources/Images/scripting-functions-monthstart-example-chart-object.png)

La transazione 8192 è avvenuta il 16 marzo. La funzione `monthstart()` identifica che la transazione ha avuto luogo nel mese di marzo e restituisce il primo millisecondo di quel mese, ovvero il 1° marzo alle 12:00:00 AM.

## Esempio 4 – Scenario

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

#### Script di caricamento ed espressione del grafico

Panoramica

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

Lo script di caricamento contiene:

* Un set di dati contenente un insieme di saldi di prestiti, che viene caricato in una tabella chiamata Loans.

* Dati costituiti dagli ID dei prestiti, dal saldo all'inizio del mese e dal tasso di interesse semplice annuo applicato a ciascun prestito.

L'utente finale desidera un oggetto grafico che mostri, in base all'ID del prestito, gli interessi correnti che sono stati maturati per ciascun prestito nel mese in corso.

Script di caricamento

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

Risultati

Procedere come indicato di seguito:

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

   * loan\_id

   * start\_balance

2. Quindi, creare una misura per calcolare gli interessi accumulati:

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

3. Impostare la Formattazione numero della misura su Denaro.

Tabella dei risultati

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

Utilizzando la data odierna come unico argomento, la funzione monthstart() restituisce la data di inizio del mese corrente. Sottraendo tale risultato dalla data corrente, l'espressione restituisce il numero di giorni trascorsi fino ad ora questo mese.

Questo valore viene quindi moltiplicato per il tasso di interesse e diviso per 365, per restituire il tasso di interesse effettivo incorso per questo periodo. Il risultato viene poi moltiplicato per il saldo iniziale del prestito per ottenere gli interessi maturati fino a ora in questo mese.