# maketime - funzione dello script e del grafico

Questa funzione restituisce una data calcolata dall'ora hh, dal minuto mm e dal secondo ss.

Sintassi:

MakeTime(hh [ , mm [ , ss ] ])

Tipo di dati restituiti: duale

Argomenti

| Argomento | Descrizione |
| --- | --- |
| hh | L'ora è un numero intero. |
| mm | Il minuto è un numero intero.<br><br>Se non si indicano i minuti, verrà utilizzato il valore 00. |
| ss | Il secondo è un numero intero.<br><br>Se non si indicano i secondi, verrà utilizzato il valore 00. |

## Casi di utilizzo

La funzione `maketime()` viene comunemente utilizzata nello script per la generazione dei dati per generare un campo temporale. A volte, quando il campo dell'ora è derivato dal testo in ingresso, questa funzione può essere utilizzata per costruire l'ora utilizzando i suoi componenti.

Questi esempi utilizzano il formato orario `h:mm:ss`. Il formato della data viene specificato nell'istruzione `SET TimeFormat` sopra lo script di caricamento dei dati. Modificare il formato negli esempi in base ai propri requisiti.

Esempi di funzioni

| Esempio | Risultato |
| --- | --- |
| `maketime(22)` | Restituisce 22:00:00. |
| `maketime(22, 17)` | Restituisce 22:17:00. |
| `maketime(22,17,52 )` | Restituisce 22:17:52. |

## 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 – maketime()

[](https://help.qlik.com/en-US/sense/Subsystems/Hub/Content/Sense_Hub/Scripting/DateAndTimeFunctions/maketime.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 un insieme di transazioni, caricato in una tabella denominata `Transactions`.

* Gli orari delle transazioni sono forniti in tre campi: `hours`, `minutes` e `seconds`.

* La creazione di un campo, `transaction_time`, che restituisce l'ora nel formato della variabile di sistema `TimeFormat`.

Script di caricamento

```
SET TimeFormat='h:mm:ss TT';

Transactions:
    Load
        *,
        maketime(transaction_hour, transaction_minute, transaction_second) as transaction_time
        ; 
Load * Inline [
transaction_id, transaction_hour, transaction_minute, transaction_second, transaction_amount, transaction_quantity, customer_id
3750, 18, 43, 30, 12423.56, 23, 2038593
3751, 6, 32, 07, 5356.31, 6, 203521
3752, 12, 09, 16, 15.75, 1, 5646471
3753, 21, 43, 41, 7, 3036491
3754, 17, 55, 22, 21484.21, 1356, 049681
3756, 2, 52, 22, -59.18, 2, 2038593
3757, 9, 25, 23, 3177.4, 21, 203521
];
```

Risultati

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

* `transaction_hour`

* `transaction_minute`

* `transaction_second`

* `transaction_time`

Tabella dei risultati

| transaction\_hour | transaction\_minute | transaction\_second | transaction\_time |
| --- | --- | --- | --- |
| 2 | 52 | 22 | 2:52:22 AM |
| 6 | 32 | 07 | 6:32:07 AM |
| 9 | 25 | 23 | 9:25:23 AM |
| 12 | 09 | 16 | 12:09:16 PM |
| 17 | 55 | 22 | 5:55:22 PM |
| 18 | 43 | 30 | 6:43:30 PM |
| 21 | 43 | 41 | 9:43:41 PM |

Il campo `transaction_time` viene creato nell'istruzione di caricamento precedente utilizzando la funzione `maketime()` e passando i campi ora, minuti e secondi come argomenti della funzione.

La funzione combina e converte questi valori in un campo temporale, restituendo i risultati nel formato orario della variabile di sistema `TimeFormat`.

## Esempio 2 – time() function

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

* La creazione di un campo, `transaction_time`, che ci permetterà di mostrare i risultati in formato orario 24 ore senza modificare la variabile di sistema `TimeFormat`.

Script di caricamento

```
SET TimeFormat='h:mm:ss TT';

Transactions:
    Load
        *,
        time(maketime(transaction_hour, transaction_minute, transaction_second),'h:mm:ss') as transaction_time
        ; 
Load * Inline [
transaction_id, transaction_hour, transaction_minute, transaction_second, transaction_amount, transaction_quantity, customer_id
3750, 18, 43, 30, 12423.56, 23, 2038593
3751, 6, 32, 07, 5356.31, 6, 203521
3752, 12, 09, 16, 15.75, 1, 5646471
3753, 21, 43, 41, 7, 3036491
3754, 17, 55, 22, 21484.21, 1356, 049681
3756, 2, 52, 22, -59.18, 2, 2038593
3757, 9, 25, 23, 3177.4, 21, 203521
];
```

Risultati

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

* `transaction_hour`

* `transaction_minute`

* `transaction_second`

* `transaction_time`

Tabella dei risultati

| transaction\_hour | transaction\_minute | transaction\_second | transaction\_time |
| --- | --- | --- | --- |
| 2 | 52 | 22 | 2:52:22 |
| 6 | 32 | 07 | 6:32:07 |
| 9 | 25 | 23 | 9:25:23 |
| 12 | 09 | 16 | 12:09:16 |
| 17 | 55 | 22 | 17:55:22 |
| 18 | 43 | 30 | 18:43:30 |
| 21 | 43 | 41 | 21:43:41 |

In questo caso, la funzione `maketime()` è nidificata all'interno della funzione `time()`. Il secondo argomento della funzione `time()` imposta il formato dei risultati della funzione `maketime()` come il valore `h:mm:ss` richiesto.

## Esempio 3 - Esempio di oggetto grafico

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

#### Script di caricamento ed espressione del grafico

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 un insieme di transazioni, caricato in una tabella denominata `Transactions`.

* Tempi di transazione forniti in due campi: `hours` e `minutes`.

* La creazione di un campo, `transaction_time`, che restituisce l'ora nel formato della variabile di sistema `TimeFormat`.

Creare una misura dell'oggetto grafico, `transaction_time`, che restituisca un orario nel formato `h:mm:ss TT`.

Script di caricamento

```
SET TimeFormat='h:mm:ss TT';

Transactions:
Load * Inline [
transaction_id, transaction_hour, transaction_minute, transaction_amount, transaction_quantity, customer_id
3750, 18, 43, 12423.56, 23, 2038593
3751, 6, 32, 5356.31, 6, 203521
3752, 12, 09, 15.75, 1, 5646471
3753, 21, 43, 7, 3036491
3754, 17, 55, 21484.21, 1356, 049681
3756, 2, 52, -59.18, 2, 2038593
3757, 9, 25, 3177.4, 21, 203521
];
```

Risultati

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

* `transaction_hour`

* `transaction_minute`

Per calcolare il valore `transaction_time`, creare questa misura:

`=maketime(transaction_hour,transaction_minute)`

Tabella dei risultati

| transaction\_hour | transaction\_minute | =maketime(transaction\_hour, transaction\_minute) |
| --- | --- | --- |
| 2 | 52 | 2:52:00 AM |
| 6 | 32 | 6:32:00 AM |
| 9 | 25 | 9:25:00 AM |
| 12 | 09 | 12:09:00 PM |
| 17 | 55 | 5:55:00 PM |
| 18 | 43 | 6:43:00 PM |
| 21 | 43 | 9:43:00 PM |

La misura `transaction_time` viene creata nell'oggetto grafico utilizzando la funzione `maketime()` e passando i campi anno e minuto come argomenti della funzione.

La funzione combina quindi questi valori e i secondi vengono assunti pari a 00. Questi valori vengono poi convertiti in un campo temporale, restituendo i risultati nel formato della variabile di sistema `TimeFormat`.

## Esempio 4 – Scenario

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

#### Script di caricamento ed espressione del grafico

Panoramica

Creare un set di dati di calendario per il mese di gennaio 2022, suddiviso in incrementi di otto ore.

Script di caricamento

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

tmpCalendar:
	load 
		*
    where year(date)=2022;
load
	date(recno()+makedate(2021,12,31)) as date
AutoGenerate 31;

Left join(tmpCalendar)
load
	maketime((recno()-1)*8,00,00) as time
autogenerate 3;

Calendar:
load
	timestamp(date + time) as timestamp
resident tmpCalendar;

drop table tmpCalendar;
```

Risultati

Tabella dei risultati

| timestamp |
| --- |
| 1/1/2022 12:00:00 AM |
| 1/1/2022 8:00:00 AM |
| 1/1/2022 4:00:00 PM |
| 1/2/2022 12:00:00 AM |
| 1/2/2022 8:00:00 AM |
| 1/2/2022 4:00:00 PM |
| 1/3/2022 12:00:00 AM |
| 1/3/2022 8:00:00 AM |
| 1/3/2022 4:00:00 PM |
| 1/4/2022 12:00:00 AM |
| 1/4/2022 8:00:00 AM |
| 1/4/2022 4:00:00 PM |
| 1/5/2022 12:00:00 AM |
| 1/5/2022 8:00:00 AM |
| 1/5/2022 4:00:00 PM |
| 1/6/2022 12:00:00 AM |
| 1/6/2022 8:00:00 AM |
| 1/6/2022 4:00:00 PM |
| 1/7/2022 12:00:00 AM |
| 1/7/2022 8:00:00 AM |
| 1/7/2022 4:00:00 PM |
| 1/8/2022 12:00:00 AM |
| 1/8/2022 8:00:00 AM |
| 1/8/2022 4:00:00 PM |
| 1/9/2022 12:00:00 AM |
| + 68 ulteriori righe |

La funzione iniziale autogenerate crea un calendario contenente tutte le date di gennaio in una tabella chiamata tmpCalendar.

Viene creata una seconda tabella, contenente tre record. Per ogni record, viene preso il valore recno() – 1 (valori 0, 1, 2) e il risultato viene moltiplicato per 8. Di conseguenza, si ottengono i valori 0, 8 e 16. Questi valori vengono utilizzati come parametro dell'ora in una funzione maketime(), con i valori dei minuti e dei secondi pari a 0. Di conseguenza, la tabella contiene tre campi orari: 12:00:00 AM, 8:00:00 AM e 4:00:00 PM.

Questa tabella è unita alla tabella tmpCalendar. Poiché non ci sono campi corrispondenti tra le due tabelle per il join, le righe dell'ora vengono aggiunte a ciascuna riga della data. Di conseguenza, ogni riga di data viene ripetuta tre volte per ogni valore temporale.

Infine, la tabella Calendario viene creata da un caricamento residente della tabella tmpCalendar. I campi data e ora vengono concatenati e avvolti nella funzione timestamp() per creare il campo timestamp.

La tabella tmpCalendar viene quindi rilasciata.