# maketime — funkcja skryptu i funkcja wykresu

Ta funkcja zwraca godzinę obliczoną na podstawie parametrów godzina hh, minuta mm i sekunda ss.

Składnia:

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

Typ zwracanych danych: wartość podwójna

Argumenty

| Argument | Opis |
| --- | --- |
| hh | Godzina jest liczbą całkowitą. |
| mm | Minuta jest liczbą całkowitą.<br><br>Jeśli nie zostanie podana minuta, przyjmowana jest wartość 00. |
| ss | Sekunda jest liczbą całkowitą.<br><br>Jeśli nie zostanie podana sekunda, przyjmowana jest wartość 00. |

## Kiedy używać

Funkcja `maketime()` znajduje zastosowanie do generowania pól czasu w skryptach do generowania danych. Czasami, gdy pole czasu jest określane na podstawie tekstu wejściowego, tej funkcji można użyć do skonstruowania wartości czasu z jej elementów.

W tych przykładach jest używany format czasu `h:mm:ss`. Format godziny jest określony w instrukcji `SET TimeFormat` u góry skryptu ładowania danych. Zmień format w przykładach odpowiednio do swoich wymagań.

Przykłady funkcji

| Przykład | Wynik |
| --- | --- |
| `maketime(22)` | Zwraca wartość 22:00:00. |
| `maketime(22, 17)` | Zwraca wartość 22:17:00. |
| `maketime(22,17,52 )` | Zwraca wartość 22:17:52. |

## Ustawienia regionalne

Jeżeli nie podano inaczej, w przykładach w tym temacie stosowany jest następujący format daty: MM/DD/RRRR. Format daty jest określony w instrukcji `SET DateFormat` w skrypcie ładowania danych. Domyślny format daty w Twoim systemie może być inny ze względu na ustawienia regionalne i inne czynniki. Formaty zastosowane w przykładach można zmienić, aby dostosować je do własnych wymagań. Zamiast tego można też zmienić formaty w skrypcie ładowania, aby pasowały do tych przykładów.

Domyślne ustawienia regionalne w aplikacjach są oparte na regionalnych ustawieniach systemu komputera lub serwera, na którym zainstalowano Qlik Sense. Jeśli serwer Qlik Sense, do którego uzyskujesz dostęp, jest ustawiony na Szwecję, Edytor ładowania danych użyje szwedzkich ustawień regionalnych dla dat, godziny i waluty. Te ustawienia regionalne nie są związane z językiem wyświetlanym w interfejsie użytkownika Qlik Sense. Interfejs Qlik Sense będzie wyświetlany w tym samym języku co używana przeglądarka.

## Przykład 1 – funkcja maketime()

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

#### Skrypt ładowania i wyniki

Przegląd

Otwórz Edytor ładowania danych i poniżej dodaj skrypt ładowania do nowej sekcji.

Skrypt ładowania zawiera:

* Zestaw danych zawierający zestaw transakcji, który jest ładowany do tabeli o nazwie `Transactions`.

* Czasy transakcji określone przez trzy pola: `hours`, `minutes` i `seconds`.

* Utworzenie pola `transaction_time`, które zwraca czas w formacie zmiennej systemowej `TimeFormat`.

Skrypt ładowania

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

Wyniki

Załaduj dane i otwórz arkusz. Utwórz nową tabelę i dodaj te pola jako wymiary:

* `transaction_hour`

* `transaction_minute`

* `transaction_second`

* `transaction_time`

Tabela wynikowa

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

Pole `transaction_time` jest tworzone w instrukcji ładowania poprzedzającego przez użycie funkcji `maketime()` i przekazanie pól godziny, minut i sekund jako argumentów funkcji.

Następnie funkcja ta łączy i konwertuje te wartości na pole czasu oraz zwraca wynik w formacie czasu zmiennej systemowej `TimeFormat`.

## Przykład 2 – funkcja time()

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

#### Skrypt ładowania i wyniki

Przegląd

Otwórz Edytor ładowania danych i poniżej dodaj skrypt ładowania do nowej sekcji.

Skrypt ładowania zawiera:

* Ten sam zestaw danych i zastosowanie co w pierwszym przykładzie.

* Utworzenie pola `transaction_time`, które umożliwi nam pokazanie wyników w 24-godzinnym formacie czasu bez modyfikacji zmiennej systemowej `TimeFormat`.

Skrypt ładowania

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

Wyniki

Załaduj dane i otwórz arkusz. Utwórz nową tabelę i dodaj te pola jako wymiary:

* `transaction_hour`

* `transaction_minute`

* `transaction_second`

* `transaction_time`

Tabela wynikowa

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

W tym przypadku funkcja `maketime()` jest zagnieżdżona w funkcji `time()`. Drugi argument funkcji `time()` ustawia format wyników funkcji `maketime()` na wymagany `h:mm:ss`.

## Przykład 3 — przykład z obiektem wykresu

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

#### Skrypt ładowania i wyrażenie wykresu

Przegląd

Otwórz Edytor ładowania danych i poniżej dodaj skrypt ładowania do nowej sekcji.

Skrypt ładowania zawiera:

* Zestaw danych zawierający zestaw transakcji, który jest ładowany do tabeli o nazwie `Transactions`.

* Godziny transakcji określone przez dwa pola: `hours` i `minutes`.

* Utworzenie pola `transaction_time`, które zwraca czas w formacie zmiennej systemowej `TimeFormat`.

Utwórz miarę obiektu wykresu, `transaction_time`, która zwraca godzinę w formacie `h:mm:ss TT`.

Skrypt ładowania

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

Wyniki

Załaduj dane i otwórz arkusz. Utwórz nową tabelę i dodaj te pola jako wymiary:

* `transaction_hour`

* `transaction_minute`

Aby obliczyć `transaction_time`, należy utworzyć następującą miarę:

`=maketime(transaction_hour,transaction_minute)`

Tabela wynikowa

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

Miara `transaction_time` jest tworzona w obiekcie wykresu za pomocą funkcji `maketime()`, której jako argumenty przekazano pola godziny i minuty.

Następnie funkcja ta łączy te wartości oraz przyjmuje 00 jako liczbę sekund. Następnie te wartości zostają przekonwertowane na pole godziny oraz zostaje zwrócony wynik w formacie zmiennej systemowej `TimeFormat`.

## Przykład 4 — zastosowanie

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

#### Skrypt ładowania i wyrażenie wykresu

Przegląd

Utwórz zestaw danych kalendarza dla stycznia 2022 r., podzielony na ośmiogodzinne rosnące bloki.

Skrypt ładowania

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

Wyniki

Tabela wynikowa

| znacznik czasu |
| --- |
| 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 |
| Jeszcze 68 wierszy |

Początkowo funkcja autogenerate tworzy kalendarz zawierający wszystkie daty stycznia w tabeli o nazwie tmpCalendar.

Zostaje utworzona druga tabela, zawierająca trzy rekordy. Dla każdego rekordu wykonywane jest działanie recno() – 1 (wartości 0, 1, 2) i wynik jest mnożony przez 8. W efekcie generowane są wartości 0, 8 i 16. Wartości te są używane jako parametr godziny w funkcji maketime(), z wartościami minuty i sekundy wynoszącymi 0. W efekcie tabela zawiera trzy pola godziny: 12:00:00 AM, 8:00:00 AM i 4:00:00 PM.

Ta tabela jest połączona z tabelą tmpCalendar. Ponieważ między tymi dwiema łączonymi tabelami nie ma pasujących pól, wiersze godziny zostają dodane do każdego wiersza daty. W efekcie każdy wiersz daty występuje teraz w trzech egzemplarzach z każdą wartością godziny.

Na koniec zostaje utworzona tabela Calendar z instrukcji LOAD z predykatem Resident tabeli tmpCalendar. Pola daty i godziny zostają połączone i opakowane w funkcję timestamp() w celu utworzenia pola znacznika czasu.

Następnie tabela tmpCalendar zostaje usunięta.