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

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

Синтаксис:

DayNumberOfYear(timestamp[,start\_month])

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

Аргументы

| Аргумент | Описание |
| --- | --- |
| timestamp | Дата или метка времени для вычисления. |
| start\_month | Если в поле start\_month задать значение от 2 до 12 (1, если значение не указано), то начало года может быть передвинуто вперед на первый день любого месяца. Если, например, необходимо работать в рамках финансового года, начинающегося 1 марта, задайте start\_month = 3. |

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

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

| Пример | Результат |
| --- | --- |
| `DayNumberOfYear( '12/09/2014' )` | Возвращает 256, номер дня, отсчет которого начинается с первого дня года. |
| `DayNumberOfYear( '12/09/2014',3 )` | Возвращает 196, номер дня, отсчет которого начинается с первого марта. |

## Пример 1. Начало года в январе (скрипт)

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

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

Обзор

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

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

* Простой набор данных, содержащий список дат, который загружается в таблицу под именем `Calendar`. Используется системная переменная `DateFormat` со значением по умолчанию MM/DD/YYYY.

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

Помимо даты, в функцию не передаются дополнительные параметры.

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

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

Calendar: 
Load 
	date, 
	DayNumberOfYear(date) as daynryear
	;
Load
date
Inline
[ 
date
01/01/2022
01/10/2022
01/31/2022
02/01/2022
02/10/2022
06/30/2022
07/26/2022
10/31/2022
11/01/2022
12/31/2022
];				
```

Результаты

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

* `date`

* `daynryear`

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

| date | daynryear |
| --- | --- |
| 01/01/2022 | 1 |
| 01/10/2022 | 10 |
| 01/31/2022 | 31 |
| 02/01/2022 | 32 |
| 02/10/2022 | 41 |
| 06/30/2022 | 182 |
| 07/26/2022 | 208 |
| 10/31/2022 | 305 |
| 11/01/2022 | 306 |
| 12/31/2022 | 366 |

Первый день года — 1 января, так как в функцию `DayNumberOfYear()` не передан второй аргумент.

1 января — это первый день квартала, а 1 февраля — тридцать второй день года. 30 июня — это сто двадцать восьмой день, а 31 декабря — это триста шестьдесят шестой и последний день года.

## Пример 2. Начало года в ноябре (скрипт)

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

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

Обзор

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

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

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

* Используется системная переменная `DateFormat` со значением по умолчанию MM/DD/YYYY

* Аргумент `start_month`, начинающийся с 1 ноября. Это задает в качестве начала финансового года 1 ноября.

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

```

SET DateFormat='MM/DD/YYYY'; 

Calendar: 
Load 
	date, 
	DayNumberOfYear(date,11) as daynryear
	;
Load
date
Inline
[ 
date
01/01/2022
01/10/2022
01/31/2022
02/01/2022
02/10/2022
06/30/2022
07/26/2022
10/31/2022
11/01/2022
12/31/2022
];				
```

Результаты

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

* `date`

* `daynryear`

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

| date | daynryear |
| --- | --- |
| 01/01/2022 | 62 |
| 01/10/2022 | 71 |
| 01/31/2022 | 92 |
| 02/01/2022 | 93 |
| 02/10/2022 | 102 |
| 06/30/2022 | 243 |
| 07/26/2022 | 269 |
| 10/31/2022 | 366 |
| 11/01/2022 | 1 |
| 12/31/2022 | 61 |

Первый день года — 1 ноября, так как в функцию `DayNumberOfYear()` был передан второй аргумент со значением 11.

1 января — это первый день квартала, а 1 февраля — тридцать второй день года. 30 июня — это сто восемьдесят второй день, а 31 декабря — это триста шестьдесят шестой и последний день года.

## Пример 3. Начало года в январе (диаграмма)

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

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

Обзор

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

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

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

* Используется системная переменная `DateFormat` со значением по умолчанию MM/DD/YYYY.

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

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

```
SET DateFormat='MM/DD/YYYY';
						
Calendar:
Load
date
Inline
[
date
01/01/2022
01/10/2022
01/31/2022
02/01/2022
02/10/2022
06/30/2022
07/26/2022
10/31/2022
11/01/2022
12/31/2022
]; 
```

Результаты

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

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

`=daynumberofyear(date)`

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

| date | =daynumberofyear(date) |
| --- | --- |
| 01/01/2022 | 1 |
| 01/10/2022 | 10 |
| 01/31/2022 | 31 |
| 02/01/2022 | 32 |
| 02/10/2022 | 41 |
| 06/30/2022 | 182 |
| 07/26/2022 | 208 |
| 10/31/2022 | 305 |
| 11/01/2022 | 306 |
| 12/31/2022 | 366 |

Первый день года — 1 января, так как в функцию `DayNumberOfYear()` не передан второй аргумент.

1 января — это первый день года, а 1 февраля — тридцать второй день года. 30 июня — это сто восемьдесят второй день, а 31 декабря — это триста шестьдесят шестой и последний день года.

## Пример 4. Начало года в ноябре (диаграмма)

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

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

Обзор

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

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

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

* Используется системная переменная DateFormat со значением по умолчанию MM/DD/YYYY.

* Финансовый год длится с 1 ноября по 31 октября.

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

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

```

SET DateFormat='MM/DD/YYYY';
Calendar:
Load
date
Inline
[
date
01/01/2022
01/10/2022
01/31/2022
02/01/2022
02/10/2022
06/30/2022
07/26/2022
10/31/2022
11/01/2022
12/31/2022
]; 
```

Результаты

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

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

=daynumberofyear(date)

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

| date | =daynumberofyear(date,11) |
| --- | --- |
| 01/01/2022 | 62 |
| 01/10/2022 | 71 |
| 01/31/2022 | 92 |
| 02/01/2022 | 93 |
| 02/10/2022 | 102 |
| 06/30/2022 | 243 |
| 07/26/2022 | 269 |
| 10/31/2022 | 366 |
| 11/01/2022 | 1 |
| 12/31/2022 | 61 |

Первый день года — 1 ноября, так как в функцию DayNumberOfYear() был передан второй аргумент со значением 11 .

Финансовый год длится с ноября по октябрь. Это показано в результирующей таблице, где 1 ноября — это первый день года, а 31 октября — триста шестьдесят шестой и последний день года.