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

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

Синтаксис:

InYearToDate (timestamp, base\_date, period\_no[, first\_month\_of\_year])

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

Примечание к информации

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

Диаграмма функции inyeartodate

Диаграмма функции inyeartodate

Диаграмма функции inyeartodate ![Пример диаграммы диапазона дат, в пределах которого функция inyeartodate будет возвращать значение TRUE.](https://help.qlik.com/ru-RU/sense/May2025/Subsystems/Hub/Content/Resources/Images/scripting-functions-inyeartodate-general.png)

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

Аргументы

| Аргумент | Описание |
| --- | --- |
| timestamp | Дата, которую необходимо сравнить со значением, указанным в поле base\_date. |
| base\_date | Дата, использующаяся для оценки года. |
| period\_no | Год можно сместить, задав значение в поле period\_no. period\_no — целое число, где 0 обозначает год, включающий значение, указанное в поле base\_date. Отрицательные значения, заданные в поле period\_no, означают предшествующие годы, положительные — последующие. |
| first\_month\_of\_year | Если необходимо работать с годами (финансовыми), которые начинаются не в январе, задайте значение от 2 до 12 в поле first\_month\_of\_year. |

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

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

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

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

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

| Пример | Результат |
| --- | --- |
| `inyeartodate ('01/25/2013', '02/01/2013', 0)` | Возвращает `TRUE`. |
| `inyeartodate ('01/25/2012', '01/01/2013', 0)` | Возвращает `FALSE`. |
| `inyeartodate ('01/25/2012', '02/01/2013', -1)` | Возвращает `TRUE`. |
| `inyeartodate ('11/25/2012', '01/31/2013', 0, 4)` | Возвращает `TRUE`.<br>Значение `timestamp` выпадает на финансовый год, начинающийся в четвертом месяце, и до значения `base_date`. |
| `inyeartodate ('3/31/2013', '01/31/2013', 0, 4 )` | Возвращает `FALSE`.<br>По сравнению с предыдущим примером, значение `timestamp` все еще находится в финансовом году, но после значения `base_date`, таким образом, оно находится за пределами части года. |

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

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

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

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

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

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

Обзор

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

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

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

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

* Создание поля `in_year_to_date`, которое определяет, какие транзакции совершены в течение года до 26 июля 2021 года.

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

```
SET DateFormat='MM/DD/YYYY';

Transactions:
    Load
        *,
        inyeartodate(date,'07/26/2021', 0) as in_year_to_date
        ;
Load
*
Inline
[
id,date,amount
8188,'01/13/2020',37.23
8189,'02/26/2020',17.17
8190,'03/27/2020',88.27
8191,'04/16/2020',57.42
8192,'05/21/2020',53.80
8193,'06/14/2020',82.06
8194,'08/07/2020',40.39
8195,'09/05/2020',87.21
8196,'01/22/2021',95.93
8197,'02/03/2021',45.89
8198,'03/17/2021',36.23
8199,'04/23/2021',25.66
8200,'05/04/2021',82.77
8201,'06/30/2021',69.98
8202,'07/26/2021',76.11
8203,'07/27/2021',25.12
8204,'06/06/2022',46.23
8205,'07/18/2022',84.21
8206,'11/14/2022',96.24
8207,'12/12/2022',67.67
];
```

Результаты

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

* `date`

* `in_year_to_date`

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

| date | in\_year\_to\_date |
| --- | --- |
| 01/13/2020 | 0 |
| 02/26/2020 | 0 |
| 03/27/2020 | 0 |
| 04/16/2020 | 0 |
| 05/21/2020 | 0 |
| 06/14/2020 | 0 |
| 08/07/2020 | 0 |
| 09/05/2020 | 0 |
| 01/22/2021 | -1 |
| 02/03/2021 | -1 |
| 03/17/2021 | -1 |
| 04/23/2021 | -1 |
| 05/04/2021 | -1 |
| 06/30/2021 | -1 |
| 07/26/2021 | -1 |
| 07/27/2021 | 0 |
| 06/06/2022 | 0 |
| 07/18/2022 | 0 |
| 11/14/2022 | 0 |
| 12/12/2022 | 0 |

Поле `in_year_to_date` создано в предшествующем операторе load с помощью функции `inyeartodate()`. Первый предоставленный аргумент определяет, какое поле оценивается.

Второй аргумент — это жестко закодированная дата «26 июля 2021 года», которая представляет собой `base_date`, определяющий конечную границу этого сегмента года. `period_no` = 0 — это последний аргумент, означающий, что функция не сравнивает год, предшествующие или следующие за сегментированным годом.

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

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

Диаграмма функции inyeartodate без дополнительных аргументов![Диаграмма диапазона дат, в пределах которого функция inyeartodate будет возвращать значение TRUE.](https://help.qlik.com/ru-RU/sense/May2025/Subsystems/Hub/Content/Resources/Images/scripting-functions-inyeartodate-examples-no-additional-arguments.png)

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

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

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

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

Обзор

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

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

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

* Создание поля `previous_year_to_date`, определяющего, какие транзакции совершены в течение полного года до сегмента года, который заканчивается 26 июля 2021 года.

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

```
SET DateFormat='MM/DD/YYYY';

Transactions:
    Load
        *,
        inyeartodate(date,'07/26/2021', -1) as previous_year_to_date
        ;
Load
*
Inline
[
id,date,amount
8188,'01/13/2020',37.23
8189,'02/26/2020',17.17
8190,'03/27/2020',88.27
8191,'04/16/2020',57.42
8192,'05/21/2020',53.80
8193,'06/14/2020',82.06
8194,'08/07/2020',40.39
8195,'09/05/2020',87.21
8196,'01/22/2021',95.93
8197,'02/03/2021',45.89
8198,'03/17/2021',36.23
8199,'04/23/2021',25.66
8200,'05/04/2021',82.77
8201,'06/30/2021',69.98
8202,'07/26/2021',76.11
8203,'07/27/2021',25.12
8204,'06/06/2022',46.23
8205,'07/18/2022',84.21
8206,'11/14/2022',96.24
8207,'12/12/2022',67.67
];
```

Результаты

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

* `date`

* `previous_year_to_date`

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

| date | previous\_year\_to\_date |
| --- | --- |
| 01/13/2020 | -1 |
| 02/26/2020 | -1 |
| 03/27/2020 | -1 |
| 04/16/2020 | -1 |
| 05/21/2020 | -1 |
| 06/14/2020 | -1 |
| 08/07/2020 | 0 |
| 09/05/2020 | 0 |
| 01/22/2021 | 0 |
| 02/03/2021 | 0 |
| 03/17/2021 | 0 |
| 04/23/2021 | 0 |
| 05/04/2021 | 0 |
| 06/30/2021 | 0 |
| 07/26/2021 | 0 |
| 07/27/2021 | 0 |
| 06/06/2022 | 0 |
| 07/18/2022 | 0 |
| 11/14/2022 | 0 |
| 12/12/2022 | 0 |

Значение `period_no` равное -1 указывает, что функция `inyeartodate ()` сравнивает сегмент входного года с предыдущим годом. При входной дате 26 июля 2021 г. сегмент с 1 января по 26 июля 2021 года изначально был определен как период текущего года до сегодняшнего дня. Затем `period_no` смещает этот сегмент на полный год назад, в результате чего границы диапазона дат переносятся на 1 января и 26 июля 2020 года.

Диаграмма функции inyeartodate, пример с аргументом period\_no

Диаграмма функции inyeartodate, пример с аргументом period\_no

Диаграмма функции inyeartodate, пример с аргументом period\_no![Диаграмма диапазона дат, в пределах которого функция inyeartodate будет возвращать значение TRUE.](https://help.qlik.com/ru-RU/sense/May2025/Subsystems/Hub/Content/Resources/Images/scripting-functions-inyeartodate-examples-period-no.png)

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

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

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

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

Обзор

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

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

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

* Создание поля `in_year_to_date`, которое определяет, какие транзакции совершены в течение того же года до 26 июля 2021 года.

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

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

```
SET DateFormat='MM/DD/YYYY';

Transactions:
    Load
        *,
        inyeartodate(date,'07/26/2021', 0,3) as in_year_to_date
        ;
Load
*
Inline
[
id,date,amount
8188,'01/13/2020',37.23
8189,'02/26/2020',17.17
8190,'03/27/2020',88.27
8191,'04/16/2020',57.42
8192,'05/21/2020',53.80
8193,'06/14/2020',82.06
8194,'08/07/2020',40.39
8195,'09/05/2020',87.21
8196,'01/22/2021',95.93
8197,'02/03/2021',45.89
8198,'03/17/2021',36.23
8199,'04/23/2021',25.66
8200,'05/04/2021',82.77
8201,'06/30/2021',69.98
8202,'07/26/2021',76.11
8203,'07/27/2021',25.12
8204,'06/06/2022',46.23
8205,'07/18/2022',84.21
8206,'11/14/2022',96.24
8207,'12/12/2022',67.67
];
```

Результаты

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

* `date`

* `in_year_to_date`

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

| date | in\_year\_to\_date |
| --- | --- |
| 01/13/2020 | 0 |
| 02/26/2020 | 0 |
| 03/27/2020 | 0 |
| 04/16/2020 | 0 |
| 05/21/2020 | 0 |
| 06/14/2020 | 0 |
| 08/07/2020 | 0 |
| 09/05/2020 | 0 |
| 01/22/2021 | 0 |
| 02/03/2021 | 0 |
| 03/17/2021 | -1 |
| 04/23/2021 | -1 |
| 05/04/2021 | -1 |
| 06/30/2021 | -1 |
| 07/26/2021 | -1 |
| 07/27/2021 | 0 |
| 06/06/2022 | 0 |
| 07/18/2022 | 0 |
| 11/14/2022 | 0 |
| 12/12/2022 | 0 |

Используя 3 в качестве аргумента `first_month_of_year` в функции `inyeartodate()`, функция начинает год 1 марта. Затем `base_date` устанавливает дату окончания 26 июля 2021 года для этого сегмента года.

Диаграмма функции inyeartodate, пример с аргументом first\_month\_of\_year

Диаграмма функции inyeartodate, пример с аргументом first\_month\_of\_year

Диаграмма функции inyeartodate, пример с аргументом first\_month\_of\_year![Диаграмма диапазона дат, в пределах которого функция inyeartodate будет возвращать значение TRUE.](https://help.qlik.com/ru-RU/sense/May2025/Subsystems/Hub/Content/Resources/Images/scripting-functions-inyeartodate-examples-first-mth-yr.png)

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

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

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

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

Обзор

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

Скрипт загрузки содержит тот же набор данных и сценарий, что в первом примере. Однако в этом примере в приложение загружается неизмененный набор данных. Расчет, который определяет, какие транзакции совершены в том же году до 26 июля 2021 года, создается в качестве меры в объекте диаграммы в приложении.

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

```
SET DateFormat='MM/DD/YYYY';

Transactions: 
Load 
* 
Inline  
[ 
id,date,amount 
8188,'01/13/2020',37.23 
8189,'02/26/2020',17.17 
8190,'03/27/2020',88.27 
8191,'04/16/2020',57.42 
8192,'05/21/2020',53.80 
8193,'06/14/2020',82.06 
8194,'08/07/2020',40.39 
8195,'09/05/2020',87.21 
8196,'01/22/2021',95.93 
8197,'02/03/2021',45.89 
8198,'03/17/2021',36.23 
8199,'04/23/2021',25.66 
8200,'05/04/2021',82.77 
8201,'06/30/2021',69.98 
8202,'07/26/2021',76.11 
8203,'07/27/2021',25.12 
8204,'06/06/2022',46.23 
8205,'07/18/2022',84.21 
8206,'11/14/2022',96.24 
8207,'12/12/2022',67.67
];
```

Результаты

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

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

=inyeartodate(date,'07/26/2021', 0)

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

| date | =inyeartodate(date,'07/26/2021', 0) |
| --- | --- |
| 01/13/2020 | 0 |
| 02/26/2020 | 0 |
| 03/27/2020 | 0 |
| 04/16/2020 | 0 |
| 05/21/2020 | 0 |
| 06/14/2020 | 0 |
| 08/07/2020 | 0 |
| 09/05/2020 | 0 |
| 01/22/2021 | -1 |
| 02/03/2021 | -1 |
| 03/17/2021 | -1 |
| 04/23/2021 | -1 |
| 05/04/2021 | -1 |
| 06/30/2021 | -1 |
| 07/26/2021 | -1 |
| 07/27/2021 | 0 |
| 06/06/2022 | 0 |
| 07/18/2022 | 0 |
| 11/14/2022 | 0 |
| 12/12/2022 | 0 |

Мера in\_year\_to\_date создается в объекте диаграммы с помощью функции inyeartodate(). Первый предоставленный аргумент определяет, какое поле оценивается. Второй аргумент — это жестко закодированная дата «26 июля 2021 года», которая представляет собой base\_date, определяющий конечную границу сопоставленного сегмента года. period\_no = 0 — это последний аргумент, означающий, что функция не сравнивает год, предшествующие или следующие за сегментированным годом.

Диаграмма функции inyeartodate, пример с объектом диаграммы

Диаграмма функции inyeartodate, пример с объектом диаграммы

Диаграмма функции inyeartodate, пример с объектом диаграммы![Диаграмма диапазона дат, в пределах которого функция inyeartodate будет возвращать значение TRUE.](https://help.qlik.com/ru-RU/sense/May2025/Subsystems/Hub/Content/Resources/Images/scripting-functions-inyeartodate-examples-chart-object.png)

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

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

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

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

Обзор

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

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

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

* Информация об идентификаторе продукта, типе продукта дате изготовления и себестоимости.

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

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

```
Products:
Load
*
Inline
[
product_id,product_type,manufacture_date,cost_price
8188,product A,'01/13/2020',37.23
8189,product B,'02/26/2020',17.17
8190,product B,'03/27/2020',88.27
8191,product C,'04/16/2020',57.42
8192,product D,'05/21/2020',53.80
8193,product D,'08/14/2020',82.06
8194,product C,'10/07/2020',40.39
8195,product B,'12/05/2020',87.21
8196,product A,'01/22/2021',95.93
8197,product B,'02/03/2021',45.89
8198,product C,'03/17/2021',36.23
8199,product C,'04/23/2021',25.66
8200,product B,'05/04/2021',82.77
8201,product D,'06/30/2021',69.98
8202,product D,'07/26/2021',76.11
8203,product D,'12/27/2021',25.12
8204,product C,'06/06/2022',46.23
8205,product C,'07/18/2022',84.21
8206,product A,'11/14/2022',96.24
8207,product B,'12/12/2022',67.67
];
```

Результаты

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

Создайте меру, которая вычисляет сумму для каждого продукта, произведенного в 2021 году до 27 июля:

=sum(if(inyeartodate(manufacture\_date,makedate(2021,07,26),0),cost\_price,0))

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

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

| product\_type | =sum(if(inyeartodate(manufacture\_date,makedate(2021,07,26),0),cost\_price,0)) |
| --- | --- |
| Продукт A | $95.93 |
| Продукт B | $128.66 |
| Продукт C | $61.89 |
| Продукт D | $146.09 |

Функция inyeartodate() возвращает логическое значение при проверки дат производства каждого продукта. Для любого продукта, изготовленного в 2021 году до 27 июля, функция inyeartodate() возвращает булево значение TRUE и суммирует cost\_price.

Продукт D — единственный продукт, который также был произведен после 26 июля 2021 года. Запись с product\_ID 8203 была изготовлена 27 декабря и стоила $25.12. Таким образом, эта стоимость не была включена в общую сумму продукта D в объекте диаграммы.