# maketime Функция скрипта и диаграммы

Эта функция возвращает время, рассчитанное в формате часы hh, минуты mm и секунды ss.

Синтаксис:

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

Возвращаемые типы данных: двойное значение

Аргументы

| Аргумент | Описание |
| --- | --- |
| hh | Час — целое число. |
| mm | Минута — целое число.<br><br>Если минута не задана, используется 00. |
| ss | Секунда — целое число.<br><br>Если секунда не задана, используется 00. |

## Когда использовать maketime

Функция `maketime()` обычно используется в скриптах для создания данных с целью формирования поля времени. В некоторых случаях, когда поле времени создается на основе входного текста, эту функцию можно использовать для получения времени на основе его компонентов.

В этих примерах используется формат времени `h:mm:ss`. Формат времени указан в операторе `SET TimeFormat` в верхней части скрипта загрузки данных. Измените формат в примерах согласно своим пожеланиям.

Примеры функции

| Пример | Результат |
| --- | --- |
| `maketime(22)` | Возвращает 22:00:00. |
| `maketime(22, 17)` | Возвращает 22:17:00. |
| `maketime(22,17,52 )` | Возвращает 22:17:52. |

## Региональные настройки

Если не указано иное, в примерах, приведенных в данном разделе, используется следующий формат даты: MM/DD/YYYY. Формат даты указан в операторе `SET DateFormat` скрипта загрузки данных. В вашей системе может быть установлен другой формат даты по умолчанию в зависимости от региональных настроек и других факторов. Можно изменить формат в примерах в соответствии с потребностями. Или можно изменить форматы в скрипте загрузки в соответствии с этими примерами. Для получения дополнительной информации см. раздел [Изменение региональных настроек для приложений и скриптов](https://help.qlik.com/ru-RU/cloud-services/Subsystems/Hub/Content/Sense_Hub/Apps/regional-settings-in-apps.htm).

Региональные настройки по умолчанию в приложениях основаны на профиле пользователя. Эти параметры регионального формата не связаны с языком, отображаемым в интерфейсе пользователя Qlik Cloud. Qlik Cloud будет отображаться на языке, который используется в браузере.

Если вы — разработчик приложений, то можете задать регион по умолчанию для создаваемых приложений. Для получения дополнительной информации см. раздел [Установка предпочтительных региональных настроек для создания приложений и скриптов в Аналитика Qlik Cloud](https://help.qlik.com/ru-RU/cloud-services/Subsystems/Hub/Content/Sense_Hub/UserInterface/Languages.htm#Setting).

## Пример 1. Функция maketime()

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

#### Скрипт загрузки и результаты

Обзор

Откройте редактор загрузки данных и добавьте приведенный ниже скрипт загрузки в новый раздел.

Скрипт загрузки содержит следующее:

* Набор данных, содержащий набор транзакций, который загружается в таблицу под именем `Transactions`.

* Время транзакций, предоставленное в виде трех полей: `hours`, `minutes` и `seconds`.

* Создание поля `transaction_time`, которое возвращает время в формате системной переменной `TimeFormat`.

Скрипт загрузки

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

Результаты

Загрузите данные и откройте лист. Создайте новую таблицу и добавьте эти поля как измерения:

* `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` создано предшествующим оператором load с использованием функции `maketime()`, где в качестве аргумента функции переданы поля часов, минут и секунд.

Затем функция объединяет и преобразует эти значения в поле времени, возвращая результаты в формате времени системной переменной `TimeFormat`.

## Пример 2. Функция time()

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

#### Скрипт загрузки и результаты

Обзор

Откройте редактор загрузки данных и добавьте приведенный ниже скрипт загрузки в новый раздел.

Скрипт загрузки содержит следующее:

* Используется тот же набор данных и сценарий, что в первом примере.

* Создание поля `transaction_time`, которое позволяет отображать результаты в 24-часовом формате времени, не изменяя системную переменную `TimeFormat`.

Скрипт загрузки

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

Результаты

Загрузите данные и откройте лист. Создайте новую таблицу и добавьте эти поля как измерения:

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

В этом примере функция `maketime()` вложена в функцию `time()`. Второй аргумент функции `time()` задает формат для результатов функции `maketime()` — `h:mm:ss`.

## Пример 3. Пример объекта диаграммы

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

#### Скрипт загрузки и выражение диаграммы

Обзор

Откройте редактор загрузки данных и добавьте приведенный ниже скрипт загрузки в новый раздел.

Скрипт загрузки содержит следующее:

* Набор данных, содержащий набор транзакций, загруженный в таблицу под именем `Transactions`.

* Время транзакций, предоставленное в виде двух полей: `hours` и `minutes`.

* Создание поля `transaction_time`, которое возвращает время в формате системной переменной `TimeFormat`.

Создайте меру объекта диаграммы `transaction_time`, которая возвращает дату в формате `h:mm:ss TT`.

Скрипт загрузки

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

Результаты

Загрузите данные и откройте лист. Создайте новую таблицу и добавьте эти поля как измерения:

* `transaction_hour`

* `transaction_minute`

Чтобы вычислить `transaction_time`, создайте эту меру:

`=maketime(transaction_hour,transaction_minute)`

Результирующая таблица

| час\_транзакции | минута\_транзакции | =maketime(час\_транзакции, минута\_транзакции) |
| --- | --- | --- |
| 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 | 18:43:00 |
| 21 | 43 | 21:43:00 |

Мера `transaction_time` создана в объекте диаграммы с использованием функции `maketime()`, где в качестве аргументов функции переданы поля часов и минут.

Затем функция объединяет эти значения, для секунд задается значение 00. Затем эти значения преобразуются в поле времени, а результаты возвращаются в формате системной переменной `TimeFormat`.

## Пример 4. Сценарий

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

#### Скрипт загрузки и выражение диаграммы

Обзор

Создайте набор данных календаря для января 2022 года с разбивкой на восьмичасовые приращения.

Скрипт загрузки

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

Результаты

Результирующая таблица

| метка времени |
| --- |
| 1/1/2022 12:00:00 AM |
| 01.01.2022 8:00:00 |
| 01.01.2022 16:00:00 |
| 02.01.2022 00:00:00 |
| 02.01.2022 08:00:00 |
| 02.01.2022 16:00:00 |
| 03.01.2022 00:00:00 |
| 03.01.2022 08:00:00 |
| 03.01.2022 16:00:00 |
| 04.01.2022 00:00:00 |
| 04.01.2022 08:00:00 |
| 04.01.2022 16:00:00 |
| 1/5/2022 12:00:00 AM |
| 05.01.2022 08:00:00 |
| 05.01.2022 16:00:00 |
| 06.01.2022 00:00:00 |
| 06.01.2022 08:00:00 |
| 06.01.2022 16:00:00 |
| 07.01.2022 00:00:00 |
| 07.01.2022 08:00:00 |
| 07.01.2022 16:00:00 |
| 08.01.2022 00:00:00 |
| 08.01.2022 08:00:00 |
| 08.01.2022 16:00:00 |
| 1/9/2022 12:00:00 AM |
| + 68 строк |

Начальная функция autogenerate создает календарь, содержащий все даты в январе, в таблице под именем tmpCalendar.

Создается вторая таблица, содержащая три записи. Для каждой записи берется recno() – 1 (значения 0, 1, 2), результат умножается на 8, в результате создаются значения 0, 8, 16. Эти значения используются в качестве параметра часа в функции maketime(), минутам и секундам задается значение 0. В результате, таблица содержит три поля времени: 12:00:00 AM, 8:00:00 AM и 4:00:00 PM.

Эта таблица присоединяется к таблице tmpCalendar. Так как между соединяемыми таблицами отсутствуют совпадающие поля, строки времени добавляются к каждой строке даты. В результате каждая строка даты теперь повторяется три раза для каждого значения времени.

В заключение создается таблица Calendar с использованием резидентной загрузки таблицы tmpCalendar. Поля даты и времени объединены и помещены в функцию timestamp() для создания поля метки времени.

После этого таблица tmpCalendar отбрасывается.