# maketime – Skript- och diagramfunktion

Denna funktion returnerar en tid beräknat utifrån timmar hh, minuter mm och sekunder ss.

Syntax:

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

Returnerad datatyp: dual

Argument

| Argument | Beskrivning |
| --- | --- |
| hh | Timmen i form av ett heltal. |
| mm | Minuten i form av ett heltal.<br><br>Om ingen minut angivits, antas 00. |
| ss | Sekunden i form av ett heltal.<br><br>Om ingen sekund angivits, antas 00. |

## Användning

`maketime()`-funktionen skulle i normalfallet användas i skriptet för datagenerering för att generera ett tidsfält. Ibland när tidsfältet härleds från inmatningstext kan denna funktion användas för att konstruera tiden med hjälp av dess komponenter.

I de här exemplen används tidsformatet `h:mm:ss`. Tidsformatet anges i `SET TimeFormat`-satsen längst upp i dataladdningsskriptet. Ändra formatet i exemplen så att det passar dina krav.

Exempel på funktioner

| Exempel | Resultat |
| --- | --- |
| `maketime(22)` | Returnerar 22:00:00. |
| `maketime(22, 17)` | Returnerar 22:17:00. |
| `maketime(22,17,52 )` | Returnerar 22:17:52. |

## Lokala inställningar

Om inget annat anges använder exemplen i detta ämne följande datumformat: MM/DD/ÅÅÅÅ. Datumformatet anges i `SET DateFormat`-satsen i datainläsningsskriptet. Förvald datumformatering kan vara annorlunda i ditt system, på grund av dina regionala inställningar och andra faktorer. Du kan ändra formaten i exemplen nedan så att det passar dina krav. Eller så kan du ändra formaten i ditt laddningsskript så att de matchar dessa exempel.

Standardregionalinställningar i appar baseras på de regionala systeminställningarna för datorn eller servern där Qlik Sense är installerad. Om Qlik Sense-servern du ansluter till är inställd på Sverige så kommer skriptredigeraren använda regionala inställningar för Sverige för datum, tid och valuta. Dessa regionala formatinställningar är inte relaterade till språket som visas i Qlik Sense användargränssnittet. Qlik Sense kommer att visas på samma språk som webbläsaren du använder.

## Exempel 1 – maketime()

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

#### Laddningsskript och resultat

Översikt

Öppna dataladdningsredigeraren och lägg till laddningsskriptet nedan i ett nytt delavsnitt.

Laddningsskriptet innehåller:

* En datauppsättning som innehåller en uppsättning transaktioner som laddas i en tabell som heter `Transactions`.

* Tillhandahållna transaktionstider som tillhandahålls över tre fält: `hours`, `minutes`, och `seconds`.

* Ett fält `transaction_time` skapas som returnerar tiden i formatet för systemvariabeln `TimeFormat`.

Laddningsskript

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

Resultat

Ladda data och öppna ett ark. Skapa en ny tabell och lägg till dessa fält som dimensioner:

* `transaction_hour`

* `transaction_minute`

* `transaction_second`

* `transaction_time`

Resultattabell

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

`transaction_time`-fältet skapades i den föregående load-satsen genom att använda `maketime()`-funktionen och skicka tim-, minut- och sekundfälten som funktionens argument.

Funktionen kombinerar och konverterar sedan de här värdena till ett tidsfält och returnerar resultatet i tidsformatet för systemvariabeln `TimeFormat`.

## Exempel 2 – funktionen time()

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

#### Laddningsskript och resultat

Översikt

Öppna dataladdningsredigeraren och lägg till laddningsskriptet nedan i ett nytt delavsnitt.

Laddningsskriptet innehåller:

* Samma datauppsättning och scenario som i det första exemplet.

* Ett fält `transaction_time` skapas som låter oss visa resultaten i 24-timmarsformat utan att ändra systemvariabeln `TimeFormat`.

Laddningsskript

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

Resultat

Ladda data och öppna ett ark. Skapa en ny tabell och lägg till dessa fält som dimensioner:

* `transaction_hour`

* `transaction_minute`

* `transaction_second`

* `transaction_time`

Resultattabell

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

I det här fallet nästlas `maketime()`-funktion inuti `time()`-funktionen. Det andra argumentet i `time()`-funktionen ställer in formatet i `maketime()`-funktionens resultat till det erforderliga `h:mm:ss`.

## Exampel 3 – Diagramobjektexempel

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

#### Laddningsskript och diagramuttryck

Översikt

Öppna dataladdningsredigeraren och lägg till laddningsskriptet nedan i ett nytt delavsnitt.

Laddningsskriptet innehåller:

* En datauppsättning som innehåller en uppsättning transaktioner som laddas i en tabell som heter `Transactions`.

* Tillhandahållna transaktionstider som tillhandahålls över två fält: `hours` och `minutes`.

* Ett fält `transaction_time` skapas som returnerar tiden i formatet för systemvariabeln `TimeFormat`.

Skapa ett diagramobjektmått, `transaction_time`, som returnerar en tid i formatet `h:mm:ss TT`.

Laddningsskript

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

Resultat

Ladda data och öppna ett ark. Skapa en ny tabell och lägg till dessa fält som dimensioner:

* `transaction_hour`

* `transaction_minute`

För att beräkna `transaction_time` skapar du det här måttet:

`=maketime(transaction_hour,transaction_minute)`

Resultattabell

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

`transaction_time`-måttet skapades i den föregående load-satsen genom att använda `maketime()`-funktionen och skicka tim- och minutfälten som funktionens argument.

Funktionen kombinerar sedan dessa värden, och sekunderna antas vara 00. De här värdena konverteras sedan till ett tidsfält och returnerar resultatet i form av systemvariabeln `TimeFormat`.

## Exempel 4 – Scenario

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

#### Laddningsskript och diagramuttryck

Översikt

Skapa en kalenderdatauppsättning för januari månad 2022, uppbruten i åttatimmarssteg.

Laddningsskript

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

Resultat

Resultattabell

| tidsmarkör |
| --- |
| 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/6/2022 4:00:00 PM |
| 1/8/2022 12:00:00 AM |
| 1/8/2022 8:00:00 AM |
| 1/6/2022 4:00:00 PM |
| 1/9/2022 12:00:00 AM |
| + ytterligare 68 rader |

Den initiala autogenerate-funktionen skapar en kalender som innehåller alla datum i januari i en tabell som heter tmpCalendar.

Ytterligare en tabell som innehåller tre poster skapas. För varje post tas recno() – 1 (värdena 0, 1, 2) och resultatet multipliceras med 8. Detta ger värdena 0, 8 16 som resultat. De här värdena används som timparameter i en maketime()-funktion, med minut- och sekundvärden som 0. Detta resulterar i att tabellen innehåller tre tidsfält: 12:00:00 AM, 8:00:00 AM, and 4:00:00 PM.

Den här tabellen länkas till tmpCalendar-tabellen. Eftersom det inte finns några matchande fält mellan de två tabellerna för länkningen läggs tidsraderna till i varje datarad. Detta resulterar i att varje datarad nu repeteras tre gånger för varje tidsvärde.

Slutligen skapas kalendertabellen från en resident load i tmpCalendar-tabellen. Datum- och tidsfälten konkateneras och omsluts i timestamp()-funktionen för att skapa en tidsmarkörsfältet.

tmpCalendar-tabellen släpps sedan här.