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

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

Синтаксис:

InMonthToDate (timestamp, base\_date, period\_no)

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

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

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

Схема функции `inmonthtodate`inmonthtodate. ![Диаграмма, демонстрирующая использование функции inmonthtodate для определения того, относится ли метка времени к заданному месяцу.](https://help.qlik.com/ru-RU/cloud-services/Subsystems/Hub/Content/Resources/Images/scripting-functions-inmonthtodate-diagram1.png)

Функция `inmonthtodate()` идентифицирует выбранный месяц как сегмент. Начальной границей является начало месяца. В качестве конечной границы можно указать более позднюю дату месяца. Затем функция определяет, попадает набор дат в этот сегмент или нет, и возвращает булево значение TRUE или FALSE.

Аргументы

| Аргумент | Описание |
| --- | --- |
| timestamp | Дата, которую необходимо сравнить со значением, указанным в поле base\_date. |
| base\_date | Дата, использующаяся для оценки месяца. |
| period\_no | Месяц можно сместить, задав значение в поле period\_no. period\_no — целое число, где 0 обозначает месяц, включающий значение, указанное в поле base\_date. Отрицательные значения, заданные в поле period\_no, означают предшествующие месяцы, положительные — последующие. |

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

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

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

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

Если не указано иное, в примерах, приведенных в данном разделе, используется следующий формат даты: 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).

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

| Пример | Результат |
| --- | --- |
| `inmonthtodate ('01/25/2013', '25/01/2013',<br>0)` | Возвращает True |
| `inmonthtodate ('01/25/2013', '24/01/2013',<br>0)` | Возвращает False |
| `inmonthtodate ('01/25/2013', '28/02/2013',<br>-1)` | Возвращает True |

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

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

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

Обзор

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

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

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

* Поле даты, предоставленное в формате системной переменной `DateFormat` (`MM/DD/YYYY`).

* Предшествующий оператор load, который содержит следующее:

  * Функция `inmonthtodate()`, заданная как поле `in_month_to_date`. Она определяет, какие транзакции совершены с 1 по 26 июля 2022 года.

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

```
SET DateFormat='MM/DD/YYYY'; 
						
Transactions: 
    Load 
    *, 
    inmonthtodate(date,'07/26/2022', 0) as in_month_to_date 
    ; 
Load 
* 
Inline  
[ 
id,date,amount 
8188,'1/19/2022',37.23 
8189,'1/7/2022',17.17 
8190,'2/28/2022',88.27 
8191,'2/5/2022',57.42 
8192,'3/16/2022',53.80 
8193,'4/1/2022',82.06 
8194,'5/7/2022',40.39 
8195,'5/16/2022',87.21 
8196,'6/15/2022',95.93 
8197,'6/26/2022',45.89 
8198,'7/9/2022',36.23 
8199,'7/22/2022',25.66 
8200,'7/23/2022',82.77 
8201,'7/27/2022',69.98 
8202,'8/2/2022',76.11 
8203,'8/8/2022',25.12 
8204,'8/19/2022',46.23 
8205,'9/26/2022',84.21 
8206,'10/14/2022',96.24 
8207,'10/29/2022',67.67 
]; 
```

Результаты

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

* `date`
* `in_month_to_date`

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

| date | in\_month\_to\_date |
| --- | --- |
| 1/7/2022 | 0 |
| 1/19/2022 | 0 |
| 2/5/2022 | 0 |
| 2/28/2022 | 0 |
| 3/16/2022 | 0 |
| 4/1/2022 | 0 |
| 5/7/2022 | 0 |
| 5/16/2022 | 0 |
| 6/15/2022 | 0 |
| 6/26/2022 | 0 |
| 7/9/2022 | -1 |
| 7/22/2022 | -1 |
| 7/23/2022 | -1 |
| 7/27/2022 | 0 |
| 8/2/2022 | 0 |
| 8/8/2022 | 0 |
| 8/19/2022 | 0 |
| 9/26/2022 | 0 |
| 10/14/2022 | 0 |
| 10/29/2022 | 0 |

Поле `in_month_to_date` создано в предыдущем операторе load с помощью функции `inmonthtodate()`.

Первый аргумент определяет, какое поле оценивается. Второй аргумент — это жестко закодированная дата, 26 июля, которая выступает в роли `base_date`. Этот аргумент `base_date` определяет сегментированный месяц, а также конечную границу оцениваемого сегмента.

`period_no` = `0` — это последний аргумент, означающий, что функция не сравнивает месяцы, которые следуют до или после сегментированного месяца.

Диаграмма функции `inmonthtodate` без дополнительных аргументов

Диаграмма функции `inmonthtodate` без дополнительных аргументов

Диаграмма функции `inmonthtodate`inmonthtodate без дополнительных аргументов ![Диаграмма, демонстрирующая диапазон транзакций, для которых функция inmonthtodate вернула значение TRUE.](https://help.qlik.com/ru-RU/cloud-services/Subsystems/Hub/Content/Resources/Images/scripting-functions-inmonthtodate-example1-diagram.png)

В результате все транзакции, совершенные в период с 1 по 26 июля, возвращают булево значение TRUE. Все транзакции, совершенные в июле после 26 числа, возвращают булево значение FALSE, как и транзакции, совершенные в другие месяцы года.

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

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

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

Обзор

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

В этом примере стоит задача создать поле `six_months_prior`, которое определяет, какие транзакции совершены за шесть полных месяцев до периода с 1 по 26 июля.

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

```
SET DateFormat='MM/DD/YYYY'; 
						
Transactions: 
    Load 
    *, 
    inmonthtodate(date,'07/26/2022', -6) as six_months_prior 
    ; 
Load 
* 
Inline  
[ 
id,date,amount 
8188,'1/19/2022',37.23 
8189,'1/7/2022',17.17 
8190,'2/28/2022',88.27 
8191,'2/5/2022',57.42 
8192,'3/16/2022',53.80 
8193,'4/1/2022',82.06 
8194,'5/7/2022',40.39 
8195,'5/16/2022',87.21 
8196,'6/15/2022',95.93 
8197,'6/26/2022',45.89 
8198,'7/9/2022',36.23 
8199,'7/22/2022',25.66 
8200,'7/23/2022',82.77 
8201,'7/27/2022',69.98 
8202,'8/2/2022',76.11 
8203,'8/8/2022',25.12 
8204,'8/19/2022',46.23 
8205,'9/26/2022',84.21 
8206,'10/14/2022',96.24 
8207,'10/29/2022',67.67 
]; 
```

Результаты

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

* `date`

* `six_months_prior`

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

| date | six\_months\_prior |
| --- | --- |
| 1/7/2022 | -1 |
| 1/19/2022 | -1 |
| 2/5/2022 | 0 |
| 2/28/2022 | 0 |
| 3/16/2022 | 0 |
| 4/1/2022 | 0 |
| 5/7/2022 | 0 |
| 5/16/2022 | 0 |
| 6/15/2022 | 0 |
| 6/26/2022 | 0 |
| 7/9/2022 | 0 |
| 7/22/2022 | 0 |
| 7/23/2022 | 0 |
| 7/27/2022 | 0 |
| 8/2/2022 | 0 |
| 8/8/2022 | 0 |
| 8/19/2022 | 0 |
| 9/26/2022 | 0 |
| 10/14/2022 | 0 |
| 10/29/2022 | 0 |

Используя `-6` в качестве аргумента `period_no`, функция `inmonthtodate()` сдвигает границы сравниваемого сегмента месяца на шесть месяцев. Сначала сегмент месяца начинается 1 июля и заканчивается 26 июля. Затем `period_no` сдвигает этот сегмент назад на шесть месяцев, в результате чего новыми границами сегмента становятся 1 января и 26 января.

Диаграмма функции `inmonthtodate` с аргументом period\_no = -6.

Диаграмма функции `inmonthtodate` с аргументом period\_no = -6.

Диаграмма функции `inmonthtodate`inmonthtodate с аргументом period\_no = -6. ![Диаграмма, демонстрирующая диапазон транзакций с использованием аргумента period_no = -6.](https://help.qlik.com/ru-RU/cloud-services/Subsystems/Hub/Content/Resources/Images/scripting-functions-inmonthtodate-example2-diagram.png)

В результате все транзакции, совершенные в период с 1 по 26 января, возвращают булево значение TRUE.

## Пример 3. Пример диаграммы

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

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

Обзор

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

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

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

```
SET DateFormat='MM/DD/YYYY'; 
						
Transactions: 
Load 
* 
Inline  
[ 
id,date,amount 
8188,'1/19/2022',37.23 
8189,'1/7/2022',17.17 
8190,'2/28/2022',88.27 
8191,'2/5/2022',57.42 
8192,'3/16/2022',53.80 
8193,'4/1/2022',82.06 
8194,'5/7/2022',40.39 
8195,'5/16/2022',87.21 
8196,'6/15/2022',95.93 
8197,'6/26/2022',45.89 
8198,'7/9/2022',36.23 
8199,'7/22/2022',25.66 
8200,'7/23/2022',82.77 
8201,'7/27/2022',69.98 
8202,'8/2/2022',76.11 
8203,'8/8/2022',25.12 
8204,'8/19/2022',46.23 
8205,'9/26/2022',84.21 
8206,'10/14/2022',96.24 
8207,'10/29/2022',67.67 
]; 
```

Результаты

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

`date`

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

`=inmonthtodate(date,'07/26/2022', 0)`

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

| date | =inmonthtodate(date,'07/26/2022', 0) |
| --- | --- |
| 1/7/2022 | 0 |
| 1/19/2022 | 0 |
| 2/5/2022 | 0 |
| 2/28/2022 | 0 |
| 3/16/2022 | 0 |
| 4/1/2022 | 0 |
| 5/7/2022 | 0 |
| 5/16/2022 | 0 |
| 6/15/2022 | 0 |
| 6/26/2022 | 0 |
| 7/9/2022 | -1 |
| 7/22/2022 | -1 |
| 7/23/2022 | -1 |
| 7/27/2022 | 0 |
| 8/2/2022 | 0 |
| 8/8/2022 | 0 |
| 8/19/2022 | 0 |
| 9/26/2022 | 0 |
| 10/14/2022 | 0 |
| 10/29/2022 | 0 |

Мера для поля `in_month_to_date` создается в диаграмме с помощью функции `inmonthtodate()`.

Первый аргумент определяет, какое поле оценивается. Второй аргумент — это жестко закодированная дата, 26 июля, которая выступает в роли `base_date`. Этот аргумент base\_date определяет сегментированный месяц, а также конечную границу оцениваемого сегмента. Заключительный аргумент — `period_no` = 0. Это значит, что функция не сравнивает месяцы, которые следуют до или после сегментированного месяца.

Диаграмма функции `inmonthtodate` без дополнительных аргументов

Диаграмма функции `inmonthtodate` без дополнительных аргументов

Диаграмма функции `inmonthtodate`inmonthtodate без дополнительных аргументов ![Диаграмма, демонстрирующая диапазон транзакций с 1 по 26 июля.](https://help.qlik.com/ru-RU/cloud-services/Subsystems/Hub/Content/Resources/Images/scripting-functions-inmonthtodate-example3-diagram.png)

В результате все транзакции, совершенные в период с 1 по 26 июля, возвращают булево значение TRUE. Все транзакции, совершенные в июле после 26 числа, возвращают булево значение FALSE, как и транзакции, совершенные в другие месяцы года.

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

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

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

Обзор

В этом примере набор данных загружается в таблицу под именем `Products`. Данная таблица содержит следующие поля:

* ИД продукта

* Время изготовления

* Себестоимость

Из-за ошибки оборудования продукты, произведенные в июле 2022 года, оказались бракованными. Проблема была решена 27 июля 2022 года.

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

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

```
Products: 
Load 
* 
Inline  
[ 
product_id,manufacture_date,cost_price 
8188,'1/19/2022',37.23 
8189,'1/7/2022',17.17 
8190,'2/28/2022',88.27 
8191,'2/5/2022',57.42 
8192,'3/16/2022',53.80 
8193,'4/1/2022',82.06 
8194,'5/7/2022',40.39 
8195,'5/16/2022',87.21 
8196,'6/15/2022',95.93 
8197,'6/26/2022',45.89 
8198,'7/9/2022',36.23 
8199,'7/22/2022',25.66 
8200,'7/23/2022',82.77
8201,'7/27/2022',69.98 
8202,'8/2/2022',76.11 
8203,'8/8/2022',25.12 
8204,'8/19/2022',46.23 
8205,'9/26/2022',84.21 
8206,'10/14/2022',96.24 
8207,'10/29/2022',67.67 
]; 
```

Результаты

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

* `=monthname(manufacture_date)`
* `=if(Inmonthtodate(manufacture_date,makedate(2022,07,26),0),'Defective','Faultless')`

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

`=sum(cost_price)`

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

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

| monthname(manufacture\_date) | if(Inmonthtodate(manufacture\_date,makedate(2022,07,26),0),'Defective','Faultless') | Sum(cost\_price) |
| --- | --- | --- |
| Янв 2022 | Бездефектный | $54.40 |
| Фев 2022 | Бездефектный | $145.69 |
| Мар 2022 | Бездефектный | $53.80 |
| Апр 2022 | Бездефектный | $82.06 |
| Май 2022 | Бездефектный | $127.60 |
| Июн 2022 | Бездефектный | $141.82 |
| Июл 2022 | Дефектный | $144.66 |
| Июл 2022 | Бездефектный | $69.98 |
| Авг 2022 | Бездефектный | $147.46 |
| Сен 2022 | Бездефектный | $84.21 |
| Окт 2022 | Бездефектный | $163.91 |

Функция `inmonthtodate()` возвращает булево значение при проверке дат производства каждого продукта.

Для дат, которые возвращают булево значение TRUE, продукт отмечается как «Дефектный». Любой продукт, которое возвращает значение FALSE, то есть изготовлен не с 1 по 26 июля включительно, отмечается как «Бездефектный».