# inday - funzione dello script e del grafico

Questa funzione restituisce True se timestamp ricade all'interno del giorno contenente base\_timestamp.

Sintassi:

InDay (timestamp, base\_timestamp, period\_no[, day\_start])

Schema della funzione `inday`.

Schema della funzione `inday`.

Schema della funzione `inday`inday. ![Schema che mostra come la funzione inday viene utilizzata per identificare un segmento di tempo e restituire risultati booleani basati su tale segmento.](https://help.qlik.com/it-IT/sense/November2024/Subsystems/Hub/Content/Resources/Images/scripting-functions-inday-diagram.png)

La funzione `inday()` utilizza l'argomento `base_timestamp` per identificare il giorno in cui cade il timestamp. L'ora di inizio del giorno è, per impostazione predefinita, la mezzanotte; ma è possibile modificare l'ora di inizio del giorno utilizzando l'argomento `day_start` della funzione `inday()`. Una volta definito il giorno, la funzione restituisce risultati booleani quando si confrontano i valori dei timestamp prescritti con quel giorno.

Casi di utilizzo

La funzione `inday()` restituisce un risultato booleano. In genere, questo tipo di funzione viene utilizzato come condizione in un file `if expression`. Restituisce un'aggregazione o un calcolo che dipende dal fatto che una data valutata si sia verificata nel giorno del timestamp in questione.

Ad esempio, la funzione `inday()` può essere utilizzata per identificare tutte le apparecchiature prodotte in un determinato giorno.

Tipo di dati restituiti: Booleano

In Qlik Sense, il valore booleano vero è rappresentato da -1 e il valore falso è rappresentato da 0.

Argomenti

| Argomento | Descrizione |
| --- | --- |
| `timestamp` | La data e l'ora che si desidera confrontare con `base_timestamp`. |
| `base_timestamp` | La data e l'ora utilizzate per valutare l'indicatore temporale. |
| `period_no` | Il giorno può essere differito mediante `period_no`. `period_no` è un numero intero, in cui il valore 0 indica il giorno che contiene `base_timestamp`. I valori negativi di `period_no` indicano i giorni precedenti, mentre i valori positivi indicano i giorni successivi. |
| `day_start` | Se si intende utilizzare giorni che non inizino alla mezzanotte, indicare un differimento come frazione di un giorno in `day_start`, ad esempio 0,125 per indicare le 3 del mattino. |

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

Esempi di funzioni

| Esempio | Risultato |
| --- | --- |
| `inday` ('01/12/2006 12:23:00 PM', '01/12/2006 12:00:00 AM', 0) | Restituisce True |
| ` inday  `('01/12/2006 12:23:00 PM', '01/13/2006 12:00:00 AM', 0) | Restituisce False |
| `inday` ('01/12/2006 12:23:00 PM', '01/12/2006 12:00:00 AM', -1) | Restituisce False |
| `inday` ('01/11/2006 12:23:00 PM', '01/12/2006 12:00:00 AM', -1) | Restituisce True |
| `inday` ('01/12/2006 12:23:00 PM', '01/12/2006 12:00:00 AM', 0, 0.5) | Restituisce False |
| `inday` ('01/12/2006 11:23:00 AM', '01/12/2006 12:00:00 AM', 0, 0.5) | Restituisce True |

## Esempio 1 – Istruzione LOAD (script)

[](https://help.qlik.com/en-US/sense/Subsystems/Hub/Content/Sense_Hub/Scripting/DateAndTimeFunctions/inday.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 transazioni per timestamp, caricato in una tabella chiamata `Transactions`.

* Un campo data fornito nel formato `TimeStamp` della variabile di sistema `(M/D/YYYY h:mm:ss[.fff] TT)`.

* Un caricamento precedente che contiene la funzione `inday()` impostata come campo `in_day`.

Script di caricamento

```
SET TimestampFormat='M/D/YYYY h:mm:ss[.fff] TT';

Transactions:
    Load
        *,
        inday(date,'01/05/2022 12:00:00 AM', 0) as in_day
        ;
Load
*
Inline 
[
id,date,amount
9497,'01/01/2022 7:34:46 PM',13.24
9498,'01/01/2022 10:10:22 PM',31.43
9499,'01/02/2022 8:35:54 AM',36.34
9500,'01/03/2022 2:21:53 PM',51.75
9501,'01/04/2022 6:49:38 PM',15.35
9502,'01/04/2022 10:58:34 PM',74.34
9503,'01/05/2022 5:40:49 AM',73.53
9504,'01/05/2022 11:29:38 AM',50.00
9505,'01/05/2022 7:04:57 PM',47.25
9506,'01/06/2022 8:49:09 AM',74.23
];
```

Risultati

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

* `date`

* `in_day`

Tabella dei risultati

| data | in\_day |
| --- | --- |
| 01/01/2022 7:34:46 PM | 0 |
| 01/01/2022 10:10:22 PM | 0 |
| 01/02/2022 8:35:54 AM | 0 |
| 01/03/2022 2:21:53 PM | 0 |
| 01/04/2022 6:49:38 PM | 0 |
| 01/04/2022 10:58:34 PM | 0 |
| 01/05/2022 5:40:49 AM | -1 |
| 01/05/2022 11:29:38 AM | -1 |
| 01/05/2022 7:04:57 PM | -1 |
| 01/06/2022 8:49:09 AM | 0 |

Il campo `in_day` viene creato nell'istruzione di caricamento precedente mediante l'uso della funzione `inday()` e trasferendo il campo data, un timestamp con hard coding per il 5 gennaio e un `period_no` di `0` come argomenti della funzione.

## Esempio 2 – period\_no

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

#### Script di caricamento e risultati

Panoramica

Lo script di caricamento utilizza lo stesso set di dati e lo stesso scenario utilizzati nel primo esempio.

Tuttavia, in questo esempio, l'attività viene calcolata se la data di transazione è occorsa due giorni prima del 5 gennaio.

Script di caricamento

```
SET TimestampFormat='M/D/YYYY h:mm:ss[.fff] TT';

Transactions:
    Load
        *,
        inday(date,'01/05/2022 12:00:00 AM', -2) as in_day
        ;
Load
*
Inline 
[
id,date,amount
9497,'01/01/2022 7:34:46 PM',13.24
9498,'01/01/2022 10:10:22 PM',31.43
9499,'01/02/2022 8:35:54 AM',36.34
9500,'01/03/2022 2:21:53 PM',51.75
9501,'01/04/2022 6:49:38 PM',15.35
9502,'01/04/2022 10:58:34 PM',74.34
9503,'01/05/2022 5:40:49 AM',73.53
9504,'01/05/2022 11:29:38 AM',50.00
9505,'01/05/2022 7:04:57 PM',47.25
9506,'01/06/2022 8:49:09 AM',74.23
];
```

Risultati

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

* `date`

* `in_day`

Tabella dei risultati

| data | in\_day |
| --- | --- |
| 01/01/2022 7:34:46 PM | 0 |
| 01/01/2022 10:10:22 PM | 0 |
| 01/02/2022 8:35:54 AM | 0 |
| 01/03/2022 2:21:53 PM | -1 |
| 01/04/2022 6:49:38 PM | 0 |
| 01/04/2022 10:58:34 PM | 0 |
| 01/05/2022 5:40:49 AM | 0 |
| 01/05/2022 11:29:38 AM | 0 |
| 01/05/2022 7:04:57 PM | 0 |
| 01/06/2022 8:49:09 AM | 0 |

In questa istanza, dato che un `period_no` di `-2` è stato utilizzato come argomento offset nella funzione `inday()`, la funzione determina se ciascuna data di transazione è avvenuta il 3 gennaio. Ciò può essere verificato nella tabella di output in cui una transazione restituisce un risultato booleano di TRUE.

## Esempio 3 – day\_start

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

#### Script di caricamento e risultati

Panoramica

Lo script di caricamento utilizza lo stesso set di dati e lo stesso scenario utilizzati negli esempi precedenti.

Tuttavia, in questo esempio, la policy aziendale indica che la giornata lavorativa inizia e termina alle 7:00.

Script di caricamento

```
SET TimestampFormat='M/D/YYYY h:mm:ss[.fff] TT';

Transactions:
    Load
        *,
        inday(date,'01/05/2022 12:00:00 AM', 0, 7/24) as in_day
        ;
Load
*
Inline 
[
id,date,amount
9497,'01/01/2022 7:34:46 PM',13.24
9498,'01/01/2022 10:10:22 PM',31.43
9499,'01/02/2022 8:35:54 AM',36.34
9500,'01/03/2022 2:21:53 PM',51.75
9501,'01/04/2022 6:49:38 PM',15.35
9502,'01/04/2022 10:58:34 PM',74.34
9503,'01/05/2022 5:40:49 AM',73.53
9504,'01/05/2022 11:29:38 AM',50.00
9505,'01/05/2022 7:04:57 PM',47.25
9506,'01/06/2022 8:49:09 AM',74.23
];
```

Risultati

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

* `date`

* `in_day`

Tabella dei risultati

| data | in\_day |
| --- | --- |
| 01/01/2022 7:34:46 PM | 0 |
| 01/01/2022 10:10:22 PM | 0 |
| 01/02/2022 8:35:54 AM | 0 |
| 01/03/2022 2:21:53 PM | 0 |
| 01/04/2022 6:49:38 PM | -1 |
| 01/04/2022 10:58:34 PM | -1 |
| 01/05/2022 5:40:49 AM | -1 |
| 01/05/2022 11:29:38 AM | 0 |
| 01/05/2022 7:04:57 PM | 0 |
| 01/06/2022 8:49:09 AM | 0 |

Dato che l'argomento `start_day` di 7/24, che corrisponde alle 7:00, è usato nella funzione `inday()`, la funzione determina se la data di ciascuna transazione è avvenuta il 4 gennaio dalle 7:00 e il 5 gennaio prima delle 7:00.

Ciò può essere verificato nella tabella di output dove le transazioni che hanno avuto luogo dopo le 7:00 il 4 gennaio restituiscono un risultato booleano di TRUE mentre le transazioni che hanno avuto luogo dopo le 7:00 il 5 gennaio restituiscono un risultato booleano di FALSE.

## Esempio 4 - Oggetto grafico

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

#### Script di caricamento ed espressione del grafico

Panoramica

Lo script di caricamento utilizza lo stesso set di dati e lo stesso scenario utilizzati negli esempi precedenti.

Tuttavia, in questo esempio, il set di dati è invariato e viene caricato nell'applicazione. Si calcolerà per determinare se una transazione è avvenuta il 5 gennaio creando una misura in un oggetto grafico.

Script di caricamento

```

Transactions:
Load
*
Inline 
[
id,date,amount
9497,'01/01/2022 7:34:46 PM',13.24
9498,'01/01/2022 10:10:22 PM',31.43
9499,'01/02/2022 8:35:54 AM',36.34
9500,'01/03/2022 2:21:53 PM',51.75
9501,'01/04/2022 6:49:38 PM',15.35
9502,'01/04/2022 10:58:34 PM',74.34
9503,'01/05/2022 5:40:49 AM',73.53
9504,'01/05/2022 11:29:38 AM',50.00
9505,'01/05/2022 7:04:57 PM',47.25
9506,'01/06/2022 8:49:09 AM',74.23
];
```

Risultati

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

* `date`

Per calcolare se una transazione è avvenuta il 5 gennaio, creare la seguente misura:

`=inday(date,'01/05/2022 12:00:00 AM',0)`

Tabella dei risultati

| data | inday(date,'01/05/2022 12:00:00 AM',0) |
| --- | --- |
| 01/01/2022 7:34:46 PM | 0 |
| 01/01/2022 10:10:22 PM | 0 |
| 01/02/2022 8:35:54 AM | 0 |
| 01/03/2022 2:21:53 PM | 0 |
| 01/04/2022 6:49:38 PM | 0 |
| 01/04/2022 10:58:34 PM | 0 |
| 01/05/2022 5:40:49 AM | -1 |
| 01/05/2022 11:29:38 AM | -1 |
| 01/05/2022 7:04:57 PM | -1 |
| 01/06/2022 8:49:09 AM | 0 |

## Esempio 5 – Scenario

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

#### Script di caricamento e risultati

Panoramica

In questo esempio, è stato identificato che, a causa di un errore delle apparecchiature, i prodotti fabbricati il 5 gennaio erano difettosi. L'utente finale desidera un oggetto grafico che visualizzi, per data, lo stato dei prodotti fabbricati "difettosi" o "senza difetti" e il costo dei prodotti fabbricati il 5 gennaio.

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 che viene caricato in una tabella chiamata "Prodotti".

* La tabella contiene i seguenti campi:

  * ID prodotto

  * ora di produzione

  * prezzo di costo

Script di caricamento

```

Products:
Load
*
Inline 
[
product_id,manufacture_date,cost_price
9497,'01/01/2022 7:34:46 PM',13.24
9498,'01/01/2022 10:10:22 PM',31.43
9499,'01/02/2022 8:35:54 AM',36.34
9500,'01/03/2022 2:21:53 PM',51.75
9501,'01/04/2022 6:49:38 PM',15.35
9502,'01/04/2022 10:58:34 PM',74.34
9503,'01/05/2022 5:40:49 AM',73.53
9504,'01/05/2022 11:29:38 AM',50.00
9505,'01/05/2022 7:04:57 PM',47.25
9506,'01/06/2022 8:49:09 AM',74.23
];
```

Risultati

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

=dayname(manufacture\_date)

Creare le seguenti misure:

* =if(only(InDay(manufacture\_date,makedate(2022,01,05),0)),'Defective','Faultless')

* =sum(cost\_price)

Impostare la misura Number Formatting su Money.

In Aspetto, disattivare Totals.

Tabella dei risultati

| dayname(manufacture\_date) | =if(only(InDay(manufacture\_date,makedate(2022,01,05),0)),'Defective','Faultless') | =sum(cost\_price) |
| --- | --- | --- |
| 01/01/2022 | Non difettoso | 44.67 |
| 01/02/2022 | Non difettoso | 36.34 |
| 01/03/2022 | Non difettoso | 51.75 |
| 01/04/2022 | Non difettoso | 89.69 |
| 01/05/2022 | Difettoso | 170.78 |
| 01/06/2022 | Non difettoso | 74.23 |

La funzione inday() restituisce un valore booleano quando valuta le date di produzione di ciascun prodotto. Per qualsiasi prodotto fabbricato il 5 gennaio, la funzione inday() restituisce un valore booleano TRUE e contrassegna i prodotti come "difettosi". Per tutti i prodotti che restituiscono un valore FALSE, e che quindi non sono stati fabbricati in quel giorno, vengono contrassegnati come "non difettosi".