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

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

Синтаксис:

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

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

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

Схема функции `inday`inday ![На схеме показано применение функции inday для идентификации сегмента времени и возвращения логических результатов на основе такого сегмента.](https://help.qlik.com/ru-RU/sense/May2025/Subsystems/Hub/Content/Resources/Images/scripting-functions-inday-diagram.png)

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

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

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

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

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

В 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 будет отображаться на языке, который используется в браузере.

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

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

## Пример 1. Оператор Load (скрипт)

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

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

Обзор

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

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

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

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

* Предшествующая загрузка, которая содержит функцию `inday()`, настроенную как поле `in_day`.

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

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

Transactions:
    Load
        *,
        inday(date,'01/05/2022 12:00:00 AM', 0) as in_day
        ;
Load
*
Inline 
[
id,date,amount
9497,'01/01/2022 7:34:46 PM',13.24
9498,'01/01/2022 10:10:22 PM',31.43
9499,'01/02/2022 8:35:54 AM',36.34
9500,'01/03/2022 2:21:53 PM',51.75
9501,'01/04/2022 6:49:38 PM',15.35
9502,'01/04/2022 10:58:34 PM',74.34
9503,'01/05/2022 5:40:49 AM',73.53
9504,'01/05/2022 11:29:38 AM',50.00
9505,'01/05/2022 7:04:57 PM',47.25
9506,'01/06/2022 8:49:09 AM',74.23
];
```

Результаты

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

* `date`

* `in_day`

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

| date | in\_day |
| --- | --- |
| 01/01/2022 7:34:46 PM | 0 |
| 01/01/2022 10:10:22 PM | 0 |
| 01/02/2022 8:35:54 AM | 0 |
| 01/03/2022 2:21:53 PM | 0 |
| 01/04/2022 6:49:38 PM | 0 |
| 01/04/2022 10:58:34 PM | 0 |
| 01/05/2022 5:40:49 AM | -1 |
| 01/05/2022 11:29:38 AM | -1 |
| 01/05/2022 7:04:57 PM | -1 |
| 01/06/2022 8:49:09 AM | 0 |

Поле `in_day` создано предшествующим оператором load с использованием функции `inday()`, где в качестве аргументов функции переданы поле даты, жестко запрограммированная метка времени 5 января и `period_no` = `0`.

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

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

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

Обзор

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

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

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

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

Transactions:
    Load
        *,
        inday(date,'01/05/2022 12:00:00 AM', -2) as in_day
        ;
Load
*
Inline 
[
id,date,amount
9497,'01/01/2022 7:34:46 PM',13.24
9498,'01/01/2022 10:10:22 PM',31.43
9499,'01/02/2022 8:35:54 AM',36.34
9500,'01/03/2022 2:21:53 PM',51.75
9501,'01/04/2022 6:49:38 PM',15.35
9502,'01/04/2022 10:58:34 PM',74.34
9503,'01/05/2022 5:40:49 AM',73.53
9504,'01/05/2022 11:29:38 AM',50.00
9505,'01/05/2022 7:04:57 PM',47.25
9506,'01/06/2022 8:49:09 AM',74.23
];
```

Результаты

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

* `date`

* `in_day`

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

| date | in\_day |
| --- | --- |
| 01/01/2022 7:34:46 PM | 0 |
| 01/01/2022 10:10:22 PM | 0 |
| 01/02/2022 8:35:54 AM | 0 |
| 01/03/2022 2:21:53 PM | -1 |
| 01/04/2022 6:49:38 PM | 0 |
| 01/04/2022 10:58:34 PM | 0 |
| 01/05/2022 5:40:49 AM | 0 |
| 01/05/2022 11:29:38 AM | 0 |
| 01/05/2022 7:04:57 PM | 0 |
| 01/06/2022 8:49:09 AM | 0 |

В этом примере в качестве аргумента смещения в функции `inday()` использовалось значение `period_no` = `-2`, поэтому функция определяет, произошла ли транзакция 3 января. Это можно проверить в таблице выходных данных, где одна транзакция возвращает результат в виде логического значения «ИСТИНА».

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

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

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

Обзор

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

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

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

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

Transactions:
    Load
        *,
        inday(date,'01/05/2022 12:00:00 AM', 0, 7/24) as in_day
        ;
Load
*
Inline 
[
id,date,amount
9497,'01/01/2022 7:34:46 PM',13.24
9498,'01/01/2022 10:10:22 PM',31.43
9499,'01/02/2022 8:35:54 AM',36.34
9500,'01/03/2022 2:21:53 PM',51.75
9501,'01/04/2022 6:49:38 PM',15.35
9502,'01/04/2022 10:58:34 PM',74.34
9503,'01/05/2022 5:40:49 AM',73.53
9504,'01/05/2022 11:29:38 AM',50.00
9505,'01/05/2022 7:04:57 PM',47.25
9506,'01/06/2022 8:49:09 AM',74.23
];
```

Результаты

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

* `date`

* `in_day`

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

| date | in\_day |
| --- | --- |
| 01/01/2022 7:34:46 PM | 0 |
| 01/01/2022 10:10:22 PM | 0 |
| 01/02/2022 8:35:54 AM | 0 |
| 01/03/2022 2:21:53 PM | 0 |
| 01/04/2022 6:49:38 PM | -1 |
| 01/04/2022 10:58:34 PM | -1 |
| 01/05/2022 5:40:49 AM | -1 |
| 01/05/2022 11:29:38 AM | 0 |
| 01/05/2022 7:04:57 PM | 0 |
| 01/06/2022 8:49:09 AM | 0 |

В функции `inday()` используется аргумент `start_day` = 7/24, который задает время 7:00, поэтому функция определяет, осуществлена ли каждая транзакция в период с 7:00 4 января до 7:00 5 января.

Это можно проверить в таблице выходных данных, где транзакции, которые имели место после 7:00 4 января, возвращают логическое значение «ИСТИНА», а транзакции после 7:00 5 января возвращают логическое значение «ЛОЖЬ».

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

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

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

Обзор

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

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

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

```

Transactions:
Load
*
Inline 
[
id,date,amount
9497,'01/01/2022 7:34:46 PM',13.24
9498,'01/01/2022 10:10:22 PM',31.43
9499,'01/02/2022 8:35:54 AM',36.34
9500,'01/03/2022 2:21:53 PM',51.75
9501,'01/04/2022 6:49:38 PM',15.35
9502,'01/04/2022 10:58:34 PM',74.34
9503,'01/05/2022 5:40:49 AM',73.53
9504,'01/05/2022 11:29:38 AM',50.00
9505,'01/05/2022 7:04:57 PM',47.25
9506,'01/06/2022 8:49:09 AM',74.23
];
```

Результаты

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

* `date`

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

`=inday(date,'01/05/2022 12:00:00 AM',0)`

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

| date | inday(date,'01/05/2022 12:00:00 AM',0) |
| --- | --- |
| 01/01/2022 7:34:46 PM | 0 |
| 01/01/2022 10:10:22 PM | 0 |
| 01/02/2022 8:35:54 AM | 0 |
| 01/03/2022 2:21:53 PM | 0 |
| 01/04/2022 6:49:38 PM | 0 |
| 01/04/2022 10:58:34 PM | 0 |
| 01/05/2022 5:40:49 AM | -1 |
| 01/05/2022 11:29:38 AM | -1 |
| 01/05/2022 7:04:57 PM | -1 |
| 01/06/2022 8:49:09 AM | 0 |

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

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

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

Обзор

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

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

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

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

* Данная таблица содержит следующие поля:

  * product ID (ИД продукта)

  * manufacture time (время изготовления)

  * cost price (себестоимость)

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

```

Products:
Load
*
Inline 
[
product_id,manufacture_date,cost_price
9497,'01/01/2022 7:34:46 PM',13.24
9498,'01/01/2022 10:10:22 PM',31.43
9499,'01/02/2022 8:35:54 AM',36.34
9500,'01/03/2022 2:21:53 PM',51.75
9501,'01/04/2022 6:49:38 PM',15.35
9502,'01/04/2022 10:58:34 PM',74.34
9503,'01/05/2022 5:40:49 AM',73.53
9504,'01/05/2022 11:29:38 AM',50.00
9505,'01/05/2022 7:04:57 PM',47.25
9506,'01/06/2022 8:49:09 AM',74.23
];
```

Результаты

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

=dayname(manufacture\_date)

Создайте следующие меры:

* =if(only(InDay(manufacture\_date,makedate(2022,01,05),0)),'Defective','Faultless')

* =sum(cost\_price)

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

В области Вид выключите параметр Итоги.

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

| dayname(manufacture\_date) | =if(only(InDay(manufacture\_date,makedate(2022,01,05),0)),'Defective','Faultless') | =sum(cost\_price) |
| --- | --- | --- |
| 01/01/2022 | Бездефектный | 44.67 |
| 01/02/2022 | Бездефектный | 36.34 |
| 01/03/2022 | Бездефектный | 51.75 |
| 01/04/2022 | Бездефектный | 89.69 |
| 01/05/2022 | Дефектный | 170.78 |
| 01/06/2022 | Бездефектный | 74.23 |

Функция inday() возвращает логическое значение при проверки дат производства каждого продукта. Для любого изделия, изготовленного 5 января, функция inday() возвращает логическое значение «ИСТИНА» и ставит отметку «Дефектный». Любое изделие, которое возвращает значение «ЛОЖЬ», то есть изготовлено в другой день, отмечается как «Бездефектный».