# indaytotime — функция скриптa и диаграммы

Эта функция возвращает значение True, если значение timestamp находится в пределах части дня, включающей значение, заданное в поле base\_timestamp до определенной миллисекунды, указанной в поле base\_timestamp, включительно.

Синтаксис:

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

Функция `indaytotime()` возвращает результат в виде логического значения в зависимости от того, в какой момент сегмента дня попадает ли значение метки времени. Начальная граница этого сегмента совпадает с началом дня, который по умолчанию наступает в полночь; это можно изменить помощью аргумента `day_start` функции `indaytotime()`. Конечная граница сегмента дня определяется аргументом `base_timestamp` функции.

Схема функции `indaytotime`.

Схема функции `indaytotime`.

Схема функции `indaytotime`indaytotime. ![Схема, демонстрирующая связи между переменными функции indaytotime.](https://help.qlik.com/ru-RU/sense/November2024/Subsystems/Hub/Content/Resources/Images/scripting-functions-indaytotime-diagram-overview.png)

Когда это следует использовать

Функция `indaytotime()` возвращает результат в виде булева значения. Обычно этот тип функции используется в качестве условия в `if expression`. Функция `indaytotime()` возвращает агрегирование или расчет в зависимости от того, возникла ли метка времени в сегменте дня вплоть до момента базовой метки времени.

Например, функция `indaytotime()` может использоваться для отображения суммы, вырученной от продажи билетов на сеансы, состоявшиеся на данный момент текущего дня.

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

В Qlik Sense логическое значение «истина» представлено как -1, а «ложь» — как 0.

Аргументы

| Аргумент | Описание |
| --- | --- |
| ` timestamp  ` | Дата и время, которые требуется сравнить с `base_timestamp`. |
| ` base_timestamp  ` | Дата и время, использующиеся для оценки метки времени. |
| ` period_no  ` | День можно сместить, задав значение в поле `period_no`. `period_no` — целое число, где 0 обозначает день, включающий значение, указанное в поле `base_timestamp`. Отрицательные значения, заданные в поле `period_no`, означают предшествующие дни, положительные — последующие. |
| ` day_start  ` | (необязательно) Если необходимо работать с днями, которые начинаются не в полночь, задайте смещение в виде десятичного значения в `day_start`. Например, укажите 0,125, чтобы день начинался в 3 часа ночи (3 AM). |

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

Если не указано иное, в примерах, приведенных в данном разделе, используется следующий формат даты: ММ/ДД/ГГГГ. Формат даты указан в операторе `SET DateFormat` скрипта загрузки данных. В вашей системе может быть установлен другой формат даты по умолчанию в зависимости от региональных настроек и других факторов. Можно изменить формат в примерах в соответствии с потребностями. Или можно изменить форматы в скрипте загрузки в соответствии с этими примерами.

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

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

| Пример | Результат |
| --- | --- |
| `indaytotime` ('01/12/2006 12:23:00 PM', '01/12/2006 11:59:00 PM', 0) | Возвращает True |
| `indaytotime` ('01/12/2006 12:23:00 PM', '01/12/2006 12:00:00 AM', 0) | Возвращает False |
| `indaytotime` '01/11/2006 12:23:00 PM', '01/12/2006 11:59:00 PM', -1) | Возвращает True |

## Пример 1. Без дополнительных аргументов

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

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

Обзор

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

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

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

* Поле даты, предоставленное в формате переменной `(M/D/YYYY h:mm:ss[.fff] TT)` системы `TimeStamp`.

* Предшествующая загрузка, содержащая функцию `indaytotime()`, которая задана как `'in_day_to_time'` — поле, определяющее, совершена ли каждая транзакция до 9:00 утра.

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

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

Transactions:
    Load
        *,
        indaytotime(date,'01/05/2022 9:00:00 AM',0) as in_day_to_time
        ;
Load
*
Inline 
[
id,date,amount
8188,'01/04/2022 3:41:54 AM',25.66
8189,'01/04/2022 4:19:43 AM',87.21
8190,'01/04/2022 4:53:47 AM',53.80
8191,'01/04/2022 8:38:53 AM',69.98
8192,'01/04/2022 10:37:52 AM',57.42
8193,'01/04/2022 1:54:10 PM',45.89
8194,'01/04/2022 5:53:23 PM',82.77
8195,'01/04/2022 8:13:26 PM',36.23
8196,'01/04/2022 10:00:49 PM',76.11
8197,'01/05/2022 7:45:37 AM',82.06
8198,'01/05/2022 8:44:36 AM',17.17
8199,'01/05/2022 11:26:08 AM',40.39
8200,'01/05/2022 6:43:08 PM',37.23
8201,'01/05/2022 10:54:10 PM',88.27
8202,'01/05/2022 11:09:09 PM',95.93
];
```

Результаты

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

* `date`

* `in_day_to_time`

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

| дата | in\_day\_to\_time |
| --- | --- |
| 01/04/2022 3:41:54 AM | 0 |
| 01/04/2022 4:19:43 AM | 0 |
| 01/04/2022 04:53:47 AM | 0 |
| 01/04/2022 8:38:53 AM | 0 |
| 01/04/2022 10:37:52 AM | 0 |
| 01/04/2022 1:54:10 PM | 0 |
| 01/04/2022 5:53:23 PM | 0 |
| 01/04/2022 8:13:26 PM | 0 |
| 01/04/2022 10:00:49 PM | 0 |
| 01/05/2022 7:45:37 AM | -1 |
| 01/05/2022 8:44:36 AM | -1 |
| 01/05/2022 11:26:08 AM | 0 |
| 01/05/2022 6:43:08 PM | 0 |
| 01/05/2022 10:54:10 PM | 0 |
| 01/05/2022 11:09:09 PM | 0 |

Пример 1. Схема функции `indaytotime` с ограничением 9:00

Пример 1. Схема функции `indaytotime` с ограничением 9:00

Пример 1. Схема функции `indaytotime`indaytotime с ограничением 9:00 ![Схема функции indaytotime() с ограничением 9:00.](https://help.qlik.com/ru-RU/sense/November2024/Subsystems/Hub/Content/Resources/Images/scripting-functions-indaytotime-example1-diagram.png)

Поле `in_day_to_time field` создано предшествующим оператором load с использованием функции `indaytotime()`, где в качестве аргументов функции переданы поле даты, жестко запрограммированная метка времени для 9:00 утра 5 января и смещение 0. Любая транзакция, которая совершается с полуночи до 9:00 утра 5 января, возвращает TRUE.

## Пример 2. Скрипт period\_no

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

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

Обзор

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

Однако в этом примере вы рассчитаете, произошла ли транзакция за день до 5 января.

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

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

Transactions:
    Load
        *,
        indaytotime(date,'01/05/2022 9:00:00 AM', -1) as in_day_to_time
        ;
Load
*
Inline 
[
id,date,amount
8188,'01/04/2022 3:41:54 AM',25.66
8189,'01/04/2022 4:19:43 AM',87.21
8190,'01/04/2022 4:53:47 AM',53.80
8191,'01/04/2022 8:38:53 AM',69.98
8192,'01/04/2022 10:37:52 AM',57.42
8193,'01/04/2022 1:54:10 PM',45.89
8194,'01/04/2022 5:53:23 PM',82.77
8195,'01/04/2022 8:13:26 PM',36.23
8196,'01/04/2022 10:00:49 PM',76.11
8197,'01/05/2022 7:45:37 AM',82.06
8198,'01/05/2022 8:44:36 AM',17.17
8199,'01/05/2022 11:26:08 AM',40.39
8200,'01/05/2022 6:43:08 PM',37.23
8201,'01/05/2022 10:54:10 PM',88.27
8202,'01/05/2022 11:09:09 PM',95.93
];
```

Результаты

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

* `date`

* `in_day_to_time`

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

| дата | in\_day\_to\_time |
| --- | --- |
| 01/04/2022 3:41:54 AM | -1 |
| 01/04/2022 4:19:43 AM | -1 |
| 01/04/2022 04:53:47 AM | -1 |
| 01/04/2022 8:38:53 AM | -1 |
| 01/04/2022 10:37:52 AM | 0 |
| 01/04/2022 1:54:10 PM | 0 |
| 01/04/2022 5:53:23 PM | 0 |
| 01/04/2022 8:13:26 PM | 0 |
| 01/04/2022 10:00:49 PM | 0 |
| 01/05/2022 7:45:37 AM | 0 |
| 01/05/2022 8:44:36 AM | 0 |
| 01/05/2022 11:26:08 AM | 0 |
| 01/05/2022 6:43:08 PM | 0 |
| 01/05/2022 10:54:10 PM | 0 |
| 01/05/2022 11:09:09 PM | 0 |

Пример 2. Схема функции `indaytotime` с транзакциями за 4 января.

Пример 2. Схема функции `indaytotime` с транзакциями за 4 января.

Пример 2. Схема функции `indaytotime`indaytotime с транзакциями за 4 января.![Схема функции indaytotime(), которая использует period_no = -1, чтобы вернуть транзакции за 4 января.](https://help.qlik.com/ru-RU/sense/November2024/Subsystems/Hub/Content/Resources/Images/scripting-functions-indaytotime-example2-diagram.png)

В этом примере в качестве аргумента смещения в функции `indaytotime()` использовалось значение -1, поэтому функция определяет, произошла ли транзакция 4 января. Это можно проверить в таблице выходных данных, где одна транзакция возвращает результат в виде логического значения TRUE.

## Пример 3. Скрипт day\_start

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

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

Обзор

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

Однако в этом примере используется политика компании, согласно которой рабочий день начинается и заканчивается в 8:00 утра.

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

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

Transactions:
    Load
        *,
        indaytotime(date,'01/05/2022 9:00:00 AM', 0,8/24) as in_day_to_time
        ;
Load
*
Inline 
[
id,date,amount
8188,'01/04/2022 3:41:54 AM',25.66
8189,'01/04/2022 4:19:43 AM',87.21
8190,'01/04/2022 4:53:47 AM',53.80
8191,'01/04/2022 8:38:53 AM',69.98
8192,'01/04/2022 10:37:52 AM',57.42
8193,'01/04/2022 1:54:10 PM',45.89
8194,'01/04/2022 5:53:23 PM',82.77
8195,'01/04/2022 8:13:26 PM',36.23
8196,'01/04/2022 10:00:49 PM',76.11
8197,'01/05/2022 7:45:37 AM',82.06
8198,'01/05/2022 8:44:36 AM',17.17
8199,'01/05/2022 11:26:08 AM',40.39
8200,'01/05/2022 6:43:08 PM',37.23
8201,'01/05/2022 10:54:10 PM',88.27
8202,'01/05/2022 11:09:09 PM',95.93
];
```

Результаты

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

* `date`

* `in_day_to_time`

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

| дата | in\_day\_to\_time |
| --- | --- |
| 01/04/2022 3:41:54 AM | 0 |
| 01/04/2022 4:19:43 AM | 0 |
| 01/04/2022 04:53:47 AM | 0 |
| 01/04/2022 8:38:53 AM | 0 |
| 01/04/2022 10:37:52 AM | 0 |
| 01/04/2022 1:54:10 PM | 0 |
| 01/04/2022 5:53:23 PM | 0 |
| 01/04/2022 8:13:26 PM | 0 |
| 01/04/2022 10:00:49 PM | 0 |
| 01/05/2022 7:45:37 AM | 0 |
| 01/05/2022 8:44:36 AM | -1 |
| 01/05/2022 11:26:08 AM | 0 |
| 01/05/2022 6:43:08 PM | 0 |
| 01/05/2022 10:54:10 PM | 0 |
| 01/05/2022 11:09:09 PM | 0 |

Пример 3. Схема функции `indaytotime` с транзакциями с 8:00 до 9:00 утра.

Пример 3. Схема функции `indaytotime` с транзакциями с 8:00 до 9:00 утра.

Пример 3. Схема функции `indaytotime`indaytotime с транзакциями с 8:00 до 9:00 утра.![Схема функции indaytotime(), которая отображает транзакции за период с 8:00 до 9:00 утра.](https://help.qlik.com/ru-RU/sense/November2024/Subsystems/Hub/Content/Resources/Images/scripting-functions-indaytotime-example3-diagram.png)

Так как аргумент `start_day` = 8/24, который соответствует 8:00 утра, используется в функции `indaytotime()`, каждый день начинается и заканчивается в 8:00 утра. Поэтому функция `indaytotime()` будет возвращать логическое значение «ИСТИНА» для любой транзакции, которая имела место в период с 8:00 до 9:00 5 января.

## Пример 4. Объект диаграммы

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

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

Обзор

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

Однако в этом примере в приложение загружается неизмененный набор данных. Выполнив расчет, вы определите, осуществлена ли транзакция до 9:00 утра 5 января, создав меру в объекте диаграммы.

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

```

Transactions:
Load
*
Inline 
[
id,date,amount
8188,'01/04/2022 3:41:54 AM',25.66
8189,'01/04/2022 4:19:43 AM',87.21
8190,'01/04/2022 4:53:47 AM',53.80
8191,'01/04/2022 8:38:53 AM',69.98
8192,'01/04/2022 10:37:52 AM',57.42
8193,'01/04/2022 1:54:10 PM',45.89
8194,'01/04/2022 5:53:23 PM',82.77
8195,'01/04/2022 8:13:26 PM',36.23
8196,'01/04/2022 10:00:49 PM',76.11
8197,'01/05/2022 7:45:37 AM',82.06
8198,'01/05/2022 8:44:36 AM',17.17
8199,'01/05/2022 11:26:08 AM',40.39
8200,'01/05/2022 6:43:08 PM',37.23
8201,'01/05/2022 10:54:10 PM',88.27
8202,'01/05/2022 11:09:09 PM',95.93
];
```

Результаты

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

`date`.

Чтобы определить, совершена ли транзакция до 9:00 утра 5 января, создайте следующую меру:

`=indaytotime(date,'01/05/2022 9:00:00 AM',0)`

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

| дата | =indaytotime(date,'01/05/2022 9:00:00 AM',0) |
| --- | --- |
| 01/04/2022 3:41:54 AM | 0 |
| 01/04/2022 4:19:43 AM | 0 |
| 01/04/2022 04:53:47 AM | 0 |
| 01/04/2022 8:38:53 AM | 0 |
| 01/04/2022 10:37:52 AM | 0 |
| 01/04/2022 1:54:10 PM | 0 |
| 01/04/2022 5:53:23 PM | 0 |
| 01/04/2022 8:13:26 PM | 0 |
| 01/04/2022 10:00:49 PM | 0 |
| 01/05/2022 7:45:37 AM | -1 |
| 01/05/2022 8:44:36 AM | -1 |
| 01/05/2022 11:26:08 AM | 0 |
| 01/05/2022 6:43:08 PM | 0 |
| 01/05/2022 10:54:10 PM | 0 |
| 01/05/2022 11:09:09 PM | 0 |

Мера `in_day_to_time` создана в объекте диаграммы с использованием функции `indaytotime()`, где в качестве аргументов функции переданы поле даты, жестко запрограммированная метка времени для 9:00 утра 5 января и смещение `0`. Любая транзакция, которая совершается с полуночи до 9:00 утра 5 января, возвращает TRUE. Это можно проверить в таблице результатов.

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

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

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

Обзор

В этом примере набор данных, содержащий продажи билетов для местного кинотеатра, загружается в таблицу Ticket\_Sales. Сегодня 3 мая 2022 года, сейчас 11:00 утра.

Пользователь хочет, чтобы объект диаграммы ключевого показателя эффективности отображал доход, полученный от всех сеансов, которые сегодня уже состоялись на текущий момент.

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

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

Ticket_Sales:
Load
*
Inline 
[
sale ID, show time, ticket price
1,05/01/2022 09:30:00 AM,10.50
2,05/03/2022 05:30:00 PM,21.00
3,05/03/2022 09:30:00 AM,10.50
4,05/03/2022 09:30:00 AM,31.50
5,05/03/2022 09:30:00 AM,10.50
6,05/03/2022 12:00:00 PM,42.00
7,05/03/2022 12:00:00 PM,10.50
8,05/03/2022 05:30:00 PM,42.00
9,05/03/2022 08:00:00 PM,31.50
10,05/04/2022 10:30:00 AM,31.50
11,05/04/2022 12:00:00 PM,10.50
12,05/04/2022 05:30:00 PM,10.50
13,05/05/2022 05:30:00 PM,21.00
14,05/06/2022 12:00:00 PM,21.00
15,05/07/2022 09:30:00 AM,42.00
16,05/07/2022 10:30:00 AM,42.00
17,05/07/2022 10:30:00 AM,10.50
18,05/07/2022 05:30:00 PM,10.50
19,05/08/2022 05:30:00 PM,21.00
20,05/11/2022 09:30:00 AM,10.50
];
```

Результаты

Выполните следующие действия.

1. Создайте объект ключевого показателя эффективности.

2. Создайте меру, которая будет отображать сумму всех продаж билетов на сеансы, которые состоялись сегодня на данный момент, с использованием функции indaytotime():

=sum(if(indaytotime([show time],'05/03/2022 11:00:00 AM',0),[ticket price],0))

1. Создайте метку для объекта ключевого показателя эффективности — «Текущий доход».

2. Задайте параметру Формат чисел меры значение Денежный.

Общая сумма продажи билетов за период до 11:00 утра 3 мая 2022 года составила $52,50.

Функция indaytotime () возвращает логическое значение при сравнении времени сеансов для каждой продажи билетов с текущим временем ('05/03/2022 11:00:00 AM’). Для любого сеанса 3 мая до 11:00 утра функция indaytotime () возвращает логическое значение «ИСТИНА», и цена билета будет включена в итоговую сумму.