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

Эта функция определяет, находится ли введенная метка времени в том году, в котором находится дата последней загрузки скрипта, и возвращает значение True, если это так, и False если это не так.

Синтаксис:

YearToDate(timestamp[ , yearoffset [ , firstmonth [ , todaydate] ] ])

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

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

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

Диаграмма с примером функции `yeartodate()`

Диаграмма с примером функции `yeartodate()`

Диаграмма с примером функции `yeartodate()`yeartodate() ![Диаграмма, демонстрирующая значения дат, для которых функция yeartodate будет возвращать значение True или False.](https://help.qlik.com/ru-RU/sense/November2024/Subsystems/Hub/Content/Resources/Images/scripting-function-yeartodate-overview.png)

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

Другими словами, функция `yeartodate()` без дополнительных параметров используется для проверки метки времени и возвращает булево значение на основе того, произошла ли дата в календарном году до даты перезагрузки включительно.

Однако функция также может заменять начальную дату года с помощью аргумента `firstmonth` и, кроме того, выполнять сравнения с предшествующими или последующими годами с помощью аргумента `yearoffset`.

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

Аргументы

| Аргумент | Описание |
| --- | --- |
| timestamp | Метка времени для проверки, например 10/12/2012. |
| yearoffset | При указании элемента yearoffset, элемент yeartodate возвращает значение True для того же периода в другом году. Отрицательное значение смещения yearoffset указывает предыдущий год, положительное значение смещения — будущий год. Наиболее поздняя дата с начала года до последнего момента достигается путем указания yearoffset = -1. Если значение не указано, принимается 0. |
| firstmonth | Если в поле firstmonth задать значение от 1 до 12 (1, если значение не указано), то начало года может быть передвинуто вперед на первый день любого месяца. Если, например, необходимо работать в рамках финансового года, начинающегося 1 мая, задайте firstmonth = 5. Значение 1 будет указывать начало финансового года с 1 января, а значение 12 — с 1 декабря. |
| todaydate | Задав значение todaydate (метка времени последнего выполнения скрипта, если не указано), можно сместить день, используемый в качестве верхней границы периода. |

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

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

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

В следующих примерах предполагается время последней перезагрузки = 11/18/2011.

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

| Пример | Результат |
| --- | --- |
| `yeartodate( '11/18/2010')` | возвращает False |
| `yeartodate( '02/01/2011')` | возвращает True |
| `yeartodate( '11/18/2011')` | возвращает True |
| `yeartodate( '11/19/2011')` | возвращает False |
| `yeartodate( '11/19/2011', 0, 1, '12/31/2011')` | возвращает True |
| `yeartodate( '11/18/2010', -1)` | возвращает True |
| `yeartodate( '11/18/2011', -1)` | возвращает False |
| `yeartodate( '04/30/2011', 0, 5)` | возвращает False |
| `yeartodate( '05/01/2011', 0, 5)` | возвращает True |

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

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

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

Обзор

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

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

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

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

* Создание поля `year_to_date`, которое определяет, какие транзакции совершены в течение календарного года до даты последней перезагрузки.

Текущая дата на момент создания — 26 апреля 2022 года.

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

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

Transactions:
    Load
        *,
        yeartodate(date) as year_to_date
        ;
Load
*
Inline 
[
id,date,amount
8188,01/10/2020,37.23
8189,02/28/2020,17.17
8190,04/09/2020,88.27
8191,04/16/2020,57.42
8192,05/21/2020,53.80
8193,08/14/2020,82.06
8194,10/07/2020,40.39
8195,12/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,12/27/2021,25.12
8204,02/02/2022,46.23
8205,02/26/2022,84.21
8206,03/07/2022,96.24
8207,03/11/2022,67.67
];
```

Результаты

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

* `date`

* `year_to_date`

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

| date | year\_to\_date |
| --- | --- |
| 01/10/2020 | 0 |
| 02/28/2020 | 0 |
| 04/09/2020 | 0 |
| 04/16/2020 | 0 |
| 05/21/2020 | 0 |
| 08/14/2020 | 0 |
| 10/07/2020 | 0 |
| 12/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 |
| 12/27/2021 | 0 |
| 02/02/2022 | -1 |
| 02/26/2022 | -1 |
| 03/07/2022 | -1 |
| 03/11/2022 | -1 |

Диаграмма функции `yeartodate()`, базовый пример

Диаграмма функции `yeartodate()`, базовый пример

Диаграмма функции `yeartodate()`yeartodate(), базовый пример![Диаграмма, демонстрирующая значения дат, для которых функция yeartodate будет возвращать значение True или False.](https://help.qlik.com/ru-RU/sense/November2024/Subsystems/Hub/Content/Resources/Images/scripting-function-yeartodate-examples-basic.png)

Поле `year_to_date` создано предшествующим оператором load с использованием функции `yeartodate()`, где в качестве аргумента передано поле `date`.

Так как функции `yeartodate()` не переданы дополнительные параметры, она сначала определяет дату перезагрузки и границы текущего календарного года (начало 1 января), которые будут возвращать булево значение `TRUE`.

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

## Пример 2. Аргумент yearoffset

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

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

Обзор

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

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

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

* Создание поля `two_years_prior`, определяющего, какие транзакции совершены на два полных года раньше сегмента текущего календарного года до рассматриваемой даты.

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

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

Transactions:
    Load
        *,
        yeartodate(date,-2) as two_years_prior
        ;
Load
*
Inline 
[
id,date,amount
8188,01/10/2020,37.23
8189,02/28/2020,17.17
8190,04/09/2020,88.27
8191,04/16/2020,57.42
8192,05/21/2020,53.80
8193,08/14/2020,82.06
8194,10/07/2020,40.39
8195,12/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,12/27/2021,25.12
8204,02/02/2022,46.23
8205,02/26/2022,84.21
8206,03/07/2022,96.24
8207,03/11/2022,67.67
];
```

Результаты

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

* `date`

* `two_years_prior`

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

| date | two\_years\_prior |
| --- | --- |
| 01/10/2020 | -1 |
| 02/28/2020 | -1 |
| 04/09/2020 | -1 |
| 04/16/2020 | -1 |
| 05/21/2020 | 0 |
| 08/14/2020 | 0 |
| 10/07/2020 | 0 |
| 12/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 |
| 12/27/2021 | 0 |
| 02/02/2022 | 0 |
| 02/26/2022 | 0 |
| 03/07/2022 | 0 |
| 03/11/2022 | 0 |

Используя аргумент `yearoffset` = -2, функция `yeartodate()` сдвигает границы сравниваемого сегмента календарного года на два полных года. Первоначально сегмент года начинался 1 января и заканчивался 26 апреля 2022 года. Затем аргумент `yearoffset` сдвигает этот сегмент на два года назад. Таким образом границы сегмента переносятся на 1 января и 26 апреля 2020 года.

Диаграмма функции `yeartodate()`, пример с аргументом yearoffset

Диаграмма функции `yeartodate()`, пример с аргументом yearoffset

Диаграмма функции `yeartodate()`yeartodate(), пример с аргументом yearoffset![Диаграмма, демонстрирующая значения дат, для которых функция yeartodate будет возвращать значение True или False.](https://help.qlik.com/ru-RU/sense/November2024/Subsystems/Hub/Content/Resources/Images/scripting-function-yeartodate-examples-yearoffset.png)

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

## Пример 3. Аргумент firstmonth

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

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

Обзор

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

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

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

* Создание поля `year_to_date`, которое определяет, какие транзакции совершены в течение календарного года до даты последней перезагрузки.

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

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

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

Transactions:
    Load
        *,
        yeartodate(date,0,7) as year_to_date
        ;
Load
*
Inline 
[
id,date,amount
8188,01/10/2020,37.23
8189,02/28/2020,17.17
8190,04/09/2020,88.27
8191,04/16/2020,57.42
8192,05/21/2020,53.80
8193,08/14/2020,82.06
8194,10/07/2020,40.39
8195,12/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,12/27/2021,25.12
8204,02/02/2022,46.23
8205,02/26/2022,84.21
8206,03/07/2022,96.24
8207,03/11/2022,67.67
];
```

Результаты

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

* `date`

* `year_to_date`

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

| date | year\_to\_date |
| --- | --- |
| 01/10/2020 | 0 |
| 02/28/2020 | 0 |
| 04/09/2020 | 0 |
| 04/16/2020 | 0 |
| 05/21/2020 | 0 |
| 08/14/2020 | 0 |
| 10/07/2020 | 0 |
| 12/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 | -1 |
| 12/27/2021 | -1 |
| 02/02/2022 | -1 |
| 02/26/2022 | -1 |
| 03/07/2022 | -1 |
| 03/11/2022 | -1 |

Поскольку в этом примере используется аргумент `firstmonth` = 7, функция `yeartodate()` задает в качестве первого дня года 1 июля, а в качестве последнего дня года — 30 июня.

Диаграмма функции `yeartodate()`, пример с аргументом firstmonth

Диаграмма функции `yeartodate()`, пример с аргументом firstmonth

Диаграмма функции `yeartodate()`yeartodate(), пример с аргументом firstmonth![Диаграмма, демонстрирующая значения дат, для которых функция yeartodate будет возвращать значение True или False.](https://help.qlik.com/ru-RU/sense/November2024/Subsystems/Hub/Content/Resources/Images/scripting-function-yeartodate-examples-firstmonth.png)

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

## Пример 4. Аргумент todaydate

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

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

Обзор

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

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

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

* Создание поля year\_to\_date, которое определяет, какие транзакции совершены в течение календарного года до даты последней перезагрузки.

Однако в этом примере требуется идентифицировать все транзакции, совершенные в течение календарного года до 1 марта 2022 года включительно.

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

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

Transactions:
    Load
        *,
        yeartodate(date, 0, 1, '03/01/2022') as year_to_date
;
Load
*
Inline 
[
id,date,amount
8188,01/10/2020,37.23
8189,02/28/2020,17.17
8190,04/09/2020,88.27
8191,04/16/2020,57.42
8192,05/21/2020,53.80
8193,08/14/2020,82.06
8194,10/07/2020,40.39
8195,12/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,12/27/2021,25.12
8204,02/02/2022,46.23
8205,02/26/2022,84.21
8206,03/07/2022,96.24
8207,03/11/2022,67.67
];
```

Результаты

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

* date

* year\_to\_date

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

| date | year\_to\_date |
| --- | --- |
| 01/10/2020 | 0 |
| 02/28/2020 | 0 |
| 04/09/2020 | 0 |
| 04/16/2020 | 0 |
| 05/21/2020 | 0 |
| 08/14/2020 | 0 |
| 10/07/2020 | 0 |
| 12/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 |
| 12/27/2021 | 0 |
| 02/02/2022 | -1 |
| 02/26/2022 | -1 |
| 03/07/2022 | 0 |
| 03/11/2022 | 0 |

В этом примере, так как используется аргумент todaydate = 03/01/2022, функция yeartodate() задает в качестве окончания сравниваемого сегмента календарного года 1 марта 2022 года. Критически важно предоставить параметр firstmonth (от 1 до 12); в противном случае функция вернет нулевые результаты (null).

Диаграмма функции yeartodate(), пример с аргументом todaydate

Диаграмма функции yeartodate(), пример с аргументом todaydate

Диаграмма функции yeartodate()yeartodate(), пример с аргументом todaydate![Диаграмма, демонстрирующая значения дат, для которых функция yeartodate будет возвращать значение True или False.](https://help.qlik.com/ru-RU/sense/November2024/Subsystems/Hub/Content/Resources/Images/scripting-function-yeartodate-examples-todaydate.png)

Таким образом, любая транзакция, совершенная в период с 1 января по 1 марта 2022 года (параметр todaydate), возвращает булев результат TRUE. Любая транзакция, совершенная до 1 января 2022 года или после 1 марта 2022 года, будет возвращать булев результат FALSE.

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

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

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

Обзор

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

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

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

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

```
Transactions:
Load
*
Inline 
[
id,date,amount
8188,01/10/2020,37.23
8189,02/28/2020,17.17
8190,04/09/2020,88.27
8191,04/16/2020,57.42
8192,05/21/2020,53.80
8193,08/14/2020,82.06
8194,10/07/2020,40.39
8195,12/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,12/27/2021,25.12
8204,02/02/2022,46.23
8205,02/26/2022,84.21
8206,03/07/2022,96.24
8207,03/11/2022,67.67
];
```

Результаты

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

Добавьте следующую меру:

=yeartodate(date)

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

| date | =yeartodate(date) |
| --- | --- |
| 01/10/2020 | 0 |
| 02/28/2020 | 0 |
| 04/09/2020 | 0 |
| 04/16/2020 | 0 |
| 05/21/2020 | 0 |
| 08/14/2020 | 0 |
| 10/07/2020 | 0 |
| 12/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 |
| 12/27/2021 | 0 |
| 02/02/2022 | -1 |
| 02/26/2022 | -1 |
| 03/07/2022 | -1 |
| 03/11/2022 | -1 |

Мера year\_to\_date создается в объекте диаграммы с использованием функции yeartodate(), где в качестве аргумента функции передано поле date.

Так как функции yeartodate() не переданы дополнительные параметры, она сначала определяет дату перезагрузки и границы текущего календарного года (начало 1 января), которые будут возвращать булево значение TRUE.

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

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

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

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

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

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

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

Обзор

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

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

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

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

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

Текущая дата на момент создания — 16 июня 2022 года.

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

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

Transactions:
Load
*
Inline 
[
id,date,amount
8188,01/10/2020,37.23
8189,02/28/2020,17.17
8190,04/09/2020,88.27
8191,04/16/2020,57.42
8192,05/21/2020,53.80
8193,08/14/2020,82.06
8194,10/07/2020,40.39
8195,12/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,12/27/2021,25.12
8204,02/02/2022,46.23
8205,02/26/2022,84.21
8206,03/07/2022,96.24
8207,03/11/2022,67.67
];
```

Результаты

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

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

2. Чтобы рассчитать общий объем продаж, создайте следующую меру агрегирования:

   =sum(if(yeartodate(date,-1),amount,0))

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

Диаграмма КПЭ yeartodate() за 2021 год

Диаграмма КПЭ yeartodate() за 2021 год

Диаграмма КПЭ yeartodate()yeartodate() за 2021 год![Визуализация КПЭ, представляющая данные о продажах за 2021 год, созданная с помощью функции yeartodate.](https://help.qlik.com/ru-RU/sense/November2024/Subsystems/Hub/Content/Resources/Images/scripting-function-yeartodate-scenario-kpi.png)

Функция yeartodate() возвращает булево значение при проверке дат для каждого идентификатора транзакции. Так как перезагрузка выполнена 16 июня 2022 года, функция yeartodate рассматривает сегмент года с 01/01/2022 по 06/16/2022. Однако так как в функции использовался аргумент period\_no = -1, эти границы затем переносятся на год назад. Поэтому для любой транзакции, совершенной с 01/01/2021 по 06/16/2021, функция yeartodate() возвращает булево значение TRUE и суммирует количество.