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

Эта функция определяет, находится ли метка времени в части месяца, двухмесячного периода, квартала, трети года (четыре месяца) или полугодия до последней миллисекунды, указанной в поле `base_date`, включительно. Также можно проследить, находится ли метка времени в предыдущем или в последующем временном периоде.

InMonths (n\_months, timestamp, base\_date, period\_no[, first\_month\_of\_year ])

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

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

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

Схема функции `inmonthstodate`inmonthstodate. ![Diagram showing how inmonthstodate function can be used to identify if a timstamp falls within or outside of a set segment of time.](https://help.qlik.com/ru-RU/sense/May2026/Subsystems/Hub/Content/Resources/Images/scripting-functions-inmonthstodate-diagram1.png)

Аргументы

| Аргумент | Описание |
| --- | --- |
| n\_months | Число месяцев, обозначающее период. Целое число или выражение, определяемое по целому числу, которое должно быть одним из следующих значений: 1 (эквивалентно функции inmonth()), 2 (двухмесячный период), 3 (эквивалентно функции inquarter()), 4 (четыре месяца) или 6 (полугодие). |
| timestamp | Дата, которую необходимо сравнить со значением, указанным в поле base\_date. |
| base\_date | Дата, использующаяся для оценки периода. |
| period\_no | Период можно сместить, задав значение в поле period\_no, целом числе или выражении, определяемом по целому числу, где 0 обозначает период, включающий значение, указанное в поле base\_date. Отрицательные значения, заданные в поле period\_no, означают предшествующие периоды, положительные — последующие. |
| first\_month\_of\_year | Если необходимо работать с годами (финансовыми), которые начинаются не в январе, задайте значение от 2 до 12 в поле first\_month\_of\_year. |

В `inmonthstodate()` функции `base_date` играет роль конечной точки определенного сегмента года, к которому он относится.

Например, если год разбит на сегменты по четыре месяца (треть года) и в качестве `base_date` задано 15 мая, любая метка времени с начала января до конца апреля будет возвращать булев результат FALSE. Даты с 1 по 15 мая будут возвращать значение TRUE. Остальные метки времени будут возвращать FALSE.

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

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

Диаграмма диапазона булевых результатов для функции `inmonthstodate`inmonthstodate. ![Diagram showing the range of Boolean results of the inmonthstodate function.](https://help.qlik.com/ru-RU/sense/May2026/Subsystems/Hub/Content/Resources/Images/scripting-functions-inmonthstodate-diagram2.png)

В качестве аргументов `n_month` в функции доступны следующие отрезки года.

`n_month`n\_monthАргументы

| Период | Количество месяцев |
| --- | --- |
| месяц | 1 |
| два месяца | 2 |
| квартал | 3 |
| треть года | 4 |
| полгода | 6 |

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

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

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

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

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

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

| Пример | Результат |
| --- | --- |
| `inmonthstodate(4, '01/25/2013', '04/25/2013',<br>0)` | Возвращает True, поскольку значение timestamp, 01/25/2013, находится в четырехмесячном периоде 01/01/2013 по 04/25/2013, в котором находится значение base\_date, 04/25/2013. |
| `inmonthstodate(4, '04/26/2013', '04/25/2006',<br>0)` | Возвращает False, поскольку 04/26/2013 находится за пределами периода, указанного в предыдущем примере. |
| `inmonthstodate(4, '09/25/2005', '02/01/2006',<br>-1)` | Возвращает True, поскольку значение period\_no, -1, сдвигает период поиска на один период из четырех месяцев назад (значение n-months), вследствие чего период поиска будет составлять промежуток с 01/09/2005 по 02/01/2006. |
| `inmonthstodate(4, '04/25/2006', '06/01/2006',<br>0, 3)` | Возвращает True, поскольку для значения first\_month\_of\_year задано 3, вследствие чего период поиска будет составлять промежуток с 03/01/2006 по 06/01/2006 вместо промежутка с 05/01/2006 по 06/01/2006. |

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

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

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

Обзор

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

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

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

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

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

  * Функция `inmonthstodate()`, заданная в качестве поля ‘`in_months_to_date`’. Она определяет, какие транзакции совершены в квартале до 15 мая 2022 года.

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

```
SET DateFormat='MM/DD/YYYY'; 
						
Transactions: 
    Load 
    *, 
    inmonthstodate(3,date,'05/15/2022', 0) as in_months_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_months_to_date`

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

| date | in\_months\_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 | -1 |
| 5/7/2022 | -1 |
| 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 |

Поле «`in_months_to_date`» создано предшествующим оператором load с использованием функции `inmonthstodate()`.

Первым предоставлен аргумент `3`, который делит год на квартальные сегменты. Второй аргумент определяет, какое поле оценивается. Третий аргумент — это жестко закодированная дата 15 мая, которая представляет собой `base_date`, определяющий конечную границу этого сегмента. Заключительный аргумент — `period_no` = `0`.

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

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

Диаграмма функции `inmonthstodate`inmonthstodate без дополнительных аргументов ![Diagram showing the range of transactions that are identified as TRUE by the inmonthstodate function.](https://help.qlik.com/ru-RU/sense/May2026/Subsystems/Hub/Content/Resources/Images/scripting-functions-inmonthstodate-diagram2.png)

Любая транзакция, совершенная в период с 1 апреля по 15 мая, возвращает булев результат TRUE. Для транзакций, даты которых не укладываются в этот период, возвращается значение FALSE.

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

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

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

Обзор

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

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

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

```
SET DateFormat='MM/DD/YYYY'; 
						
Transactions: 
    Load 
    *, 
    inmonthstodate(3,date,'05/15/2022', -1) as previous_qtr_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`

* `previous_qtr_to_date`

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

| date | предыдущий\_квартал\_по\_текущую\_дату |
| --- | --- |
| 1/7/2022 | -1 |
| 1/19/2022 | -1 |
| 2/5/2022 | -1 |
| 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 |

Используя `-1` в качестве аргумента `period_no`, функция `inmonthstodate()` сдвигает границы сопоставляемого сегмента года на один квартал.

15 мая приходится на второй квартал года, поэтому этот сегмент изначально соответствует периоду с 1 апреля по 15 мая. Аргумент `period_no` сдвигает этот сегмент на три месяца назад. Границы диапазона дат переносятся на 1 января и 15 февраля.

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

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

Диаграмма функции `inmonthstodate`inmonthstodate с аргументом period\_no = -1. ![Diagram showing the range of transactions with the period_no argument set to -1.](https://help.qlik.com/ru-RU/sense/May2026/Subsystems/Hub/Content/Resources/Images/scripting-functions-inmonthstodate-example2-diagram.png)

Таким образом, любая транзакция, совершенная в период с 1 января по 15 февраля, возвращает булев результат TRUE.

## Пример 3. Аргумент first\_month\_of\_year

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

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

Обзор

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

В этом примере политика организации устанавливает март в качестве первого месяца финансового года.

Создайте поле `in_months_to_date`, которое определяет, какие транзакции совершены в том же квартале до 15 мая 2022 года.

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

```
SET DateFormat='MM/DD/YYYY'; 
						
Transactions: 
    Load 
    *, 
    inmonthstodate(3,date,'05/15/2022', 0,3) as in_months_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_months_to_date`

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

| date | предыдущий\_квартал\_по\_текущую\_дату |
| --- | --- |
| 1/7/2022 | 0 |
| 1/19/2022 | 0 |
| 2/5/2022 | 0 |
| 2/28/2022 | 0 |
| 3/16/2022 | -1 |
| 4/1/2022 | -1 |
| 5/7/2022 | -1 |
| 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 |

Так как используется `3` в качестве аргумента `first_month_of_year` в функции `inmonthstodate()`, функция начинает год 1 марта и затем делит год на кварталы на основе первого предоставленного аргумента. Следовательно, имеются следующие квартальные сегменты:

* Mar-May (март-май)

* Jun-Aug (июнь-август)

* Sep-Nov (сентябрь-ноябрь)

* Dec-Feb (декабрь-февраль)

Аргумент `base_date` = 15 мая затем сегментирует квартал с марта по май, устанавливая для него конечную границу 15 мая.

Диаграмма функции `inmonthstodate`, где в качестве первого месяца года задан март.

Диаграмма функции `inmonthstodate`, где в качестве первого месяца года задан март.

Диаграмма функции `inmonthstodate`inmonthstodate, где в качестве первого месяца года задан март. ![Diagram showing the range of transactions with the first month of the year set as March.](https://help.qlik.com/ru-RU/sense/May2026/Subsystems/Hub/Content/Resources/Images/scripting-functions-inmonthstodate-example3-diagram.png)

Таким образом, для любой транзакции, совершенной между 1 марта и 15 мая, возвращается булев результат TRUE, а для транзакций с датами вне этих границ — значение FALSE.

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

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

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

Обзор

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

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

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

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

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

`=inmonthstodate(3,date,'05/15/2022', 0)`

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

| date | =inmonthstodate(3,date,'05/15/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 | -1 |
| 5/7/2022 | -1 |
| 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 |

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

Первым предоставлен аргумент `3`, который делит год на квартальные сегменты. Второй аргумент определяет, какое поле оценивается. Третий аргумент — это жестко закодированная дата 15 мая, которая представляет собой `base_date`, определяющий конечную границу этого сегмента. Заключительный аргумент — `period_no` = `0`.

Диаграмма функции `inmonthstodate` с квартальными сегментами.

Диаграмма функции `inmonthstodate` с квартальными сегментами.

Диаграмма функции `inmonthstodate`inmonthstodate с квартальными сегментами. ![Diagram showing the range of transactions that return a TRUE boolean value.](https://help.qlik.com/ru-RU/sense/May2026/Subsystems/Hub/Content/Resources/Images/scripting-functions-inmonthstodate-example4-diagram.png)

Любая транзакция, совершенная в период с 1 апреля по 15 мая, возвращает булев результат TRUE. Даты транзакций за пределами этого сегмента будут возвращать FALSE.

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

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

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

Обзор

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

* ИД продукта

* Product Type

* Sales date (Дата продажи)

* Sales price (Стоимость продажи)

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

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

```
SET vPeriod = 1; 

Products: 
Load 
* 
Inline  
[ 
product_id,product_type,sales_date,sales_price 
8188,product A,'9/19/2022',37.23 
8189,product D,'10/27/2022',17.17 
8190,product C,'10/30/2022',88.27 
8191,product B,'10/31/2022',57.42 
8192,product D,'11/16/2022',53.80 
8193,product D,'11/28/2022',82.06 
8194,product A,'12/2/2022',40.39 
8195,product B,'12/5/2022',87.21 
8196,product C,'12/15/2022',95.93 
8197,product B,'12/16/2022',45.89 
8198,product C,'12/19/2022',36.23 
8199,product D,'12/22/2022',25.66 
8200,product D,'12/23/2022',82.77 
8201,product A,'12/24/2022',69.98 
8202,product A,'12/24/2022',76.11 
8203,product B,'12/26/2022',25.12 
8204,product B,'12/27/2022',46.23 
8205,product B,'12/27/2022',84.21 
8206,product C,'12/28/2022',96.24 
8207,product D,'12/29/2022',67.67 
]; 
```

Результаты

Загрузите данные и откройте лист.

В начале скрипта загрузки создана переменная vPeriod, которая будет привязана к элементу управления вводом переменной.

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

1. На панели ресурсов щелкните Диаграммы.

2. В разделе Объекты панели мониторинга перетащите Ввод переменной на лист.

3. Введите заголовок для диаграммы.

4. В разделе Переменная выберите vPeriod в качестве имени и задайте для отображения объект Раскрывающийся список.

5. В списке Значения выберите Динамическое. Введите следующее:

   ```
   ='1~month|2~bi-month|3~quarter|4~tertial|6~half-year'.
   ```

6. Добавьте на лист новую таблицу.

7. На панели свойств в разделе Данные добавьте измерение product\_type.

8. Добавьте следующее выражение в качестве меры:

   =sum(if(inmonthstodate($(vPeriod),sales\_date,makedate(2022,12,24),0),sales\_price,0))

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

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

| product\_type | =sum(if(inmonthstodate($(vPeriod),sales\_date,makedate(2022,12,24),0),sales\_price,0)) |
| --- | --- |
| Продукт A | $186.48 |
| Продукт B | $190.52 |
| Продукт C | $220.43 |
| Продукт D | $261.46 |

Функция inmonthstodate() использует пользовательский ввод в качестве аргумента для определения размера начального сегмента года.

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