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

Эта функция возвращает значение, соответствующее метке времени, включающей последнюю миллисекунду дня, содержащуюся в поле time. По умолчанию для вывода используется формат TimestampFormat, установленный в скрипте.

Синтаксис:

DayEnd(time[, [period\_no[, day\_start]])

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

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

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

Аргументы

| Аргумент | Описание |
| --- | --- |
| time | Метка времени для вычисления. |
| period\_no | period\_no является целым числом или выражением, определяемым по целому числу, где значение 0 означает день, содержащий значение, указанное в полеtime. Отрицательные значения, заданные в поле period\_no, означают предшествующие дни, положительные — последующие. |
| day\_start | Чтобы указать, что дни начинаются не в полночь, укажите смещение в виде десятичного значения в параметре day\_start. Например, 0,125 обозначает 3:00.<br><br>Другими словами, чтобы создать смещение, разделите время начала на 24 часа. Например, чтобы день начинался в 7:00, используйте дробь 7/24. |

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

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

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

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

| Пример | Результат |
| --- | --- |
| dayend('01/25/2013 16:45:00') | Возвращает 01/25/2013 23:59:59. после полудня |
| dayend('01/25/2013 16:45:00') | Возвращает 01/24/2013 23:59:59. после полудня |
| dayend('01/25/2013 16:45:00') | Возвращает 01/26/2013 11:59:59. после полудня |

## Пример 1. Базовый скрипт

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

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

Обзор

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

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

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

* Переменная `DateFormat` системы `(MM/DD/YYYY)` по умолчанию.

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

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

```
SET TimestampFormat='M/D/YYYY h:mm:ss[.fff] TT'; 

Calendar: 
    Load 
      date, 
      dayend(date) as EOD_timestamp 
      ; 
Load 
date 
Inline  
[ 
date 
03/11/2022 1:47:15 AM 
03/12/2022 4:34:58 AM 
03/13/2022 5:15:55 AM 
03/14/2022 9:25:14 AM 
03/15/2022 10:06:54 AM 
03/16/2022 10:44:42 AM 
03/17/2022 11:33:30 AM 
03/18/2022 12:58:14 PM 
03/19/2022 4:23:12 PM 
03/20/2022 6:42:15 PM 
03/21/2022 7:41:16 PM 
]; 
```

Результаты

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

* `date`

* `EOD_timestamp`

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

| date | EOD\_timestamp |
| --- | --- |
| 03/11/2022 1:47:15 AM | 3/11/2022 11:59:59 PM |
| 03/12/2022 4:34:58 AM | 3/12/2022 11:59:59 PM |
| 03/13/2022 5:15:55 AM | 3/13/2022 11:59:59 PM |
| 03/14/2022 9:25:14 AM | 3/14/2022 11:59:59 PM |
| 03/15/2022 10:06:54 AM | 3/15/2022 11:59:59 PM |
| 03/16/2022 10:44:42 AM | 3/16/2022 11:59:59 PM |
| 03/17/2022 11:33:30 AM | 3/17/2022 11:59:59 PM |
| 03/18/2022 12:58:14 PM | 3/18/2022 11:59:59 PM |
| 03/19/2022 4:23:12 PM | 3/19/2022 11:59:59 PM |
| 03/20/2022 6:42:15 PM | 3/20/2022 11:59:59 PM |
| 03/21/2022 7:41:16 PM | 3/21/2022 11:59:59 PM |

Как показано в приведенной выше таблице, отметка времени окончания дня генерируется для каждой даты в наборе данных. Для отметки времени используется формат системной переменной `TimestampFormat M/D/YYYY h:mm:ss[.fff] TT`.

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

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

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

Обзор

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

Вы загрузите набор данных, содержащий бронирования службы, в таблицу под именем Services.

Набор данных включает следующие поля:

* `service_id`

* `service_date`

* `amount`

Вы создадите два новых поля в таблице:

* `deposit_due_date`: дата, когда должен быть получен авансовый платеж. Это окончание дня за три дня до `service_date`.

* `final_payment_due_date`: дата, когда должен быть получен окончательный платеж. Это окончание дня через семь дней после `service_date`.

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

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

```
SET TimestampFormat='M/D/YYYY h:mm:ss[.fff] TT'; 
						
Services: 
   Load 
     *, 
     dayend(service_date,-3) as deposit_due_date, 
     dayend(service_date,7) as final_payment_due_date 
     ; 
Load 
service_id, 
service_date, 
amount 
Inline  
[ 
service_id, service_date,amount
1,03/11/2022 9:25:14 AM,231.24 
2,03/12/2022 10:06:54 AM,567.28 
3,03/13/2022 10:44:42 AM,364.28 
4,03/14/2022 11:33:30 AM,575.76 
5,03/15/2022 12:58:14 PM,638.68 
6,03/16/2022 4:23:12 PM,785.38 
7,03/17/2022 6:42:15 PM,967.46 
8,03/18/2022 7:41:16 PM,287.67 
9,03/19/2022 8:14:15 PM,764.45 
10,03/20/2022 9:23:51 PM,875.43 
11,03/21/2022 10:04:41 PM,957.35 
]; 
```

Результаты

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

* `service_date`

* `deposit_due_date`

* `final_payment_due_date`

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

| service\_date | deposit\_due\_date | final\_payment\_due\_date |
| --- | --- | --- |
| 03/11/2022 9:25:14 AM | 3/8/2022 11:59:59 PM | 3/18/2022 11:59:59 PM |
| 03/12/2022 10:06:54 AM | 3/9/2022 11:59:59 PM | 3/19/2022 11:59:59 PM |
| 03/13/2022 10:44:42 AM | 3/10/2022 11:59:59 PM | 3/20/2022 11:59:59 PM |
| 03/14/2022 11:33:30 AM | 3/11/2022 11:59:59 PM | 3/21/2022 11:59:59 PM |
| 03/15/2022 12:58:14 PM | 3/12/2022 11:59:59 PM | 3/22/2022 11:59:59 PM |
| 03/16/2022 4:23:12 PM | 3/13/2022 11:59:59 PM | 3/23/2022 11:59:59 PM |
| 03/17/2022 6:42:15 PM | 3/14/2022 11:59:59 PM | 3/24/2022 11:59:59 PM |
| 03/18/2022 7:41:16 PM | 3/15/2022 11:59:59 PM | 3/25/2022 11:59:59 PM |
| 03/19/2022 8:14:15 PM | 3/16/2022 11:59:59 PM | 3/26/2022 11:59:59 PM |
| 03/20/2022 9:23:51 PM | 3/17/2022 11:59:59 PM | 3/27/2022 11:59:59 PM |
| 03/21/2022 10:04:41 PM | 3/18/2022 11:59:59 PM | 3/28/2022 11:59:59 PM |

Значения новых полей находятся в `TimestampFormat M/D/YYYY h:mm:ss[.fff] TT`. Так как была использована функция `dayend()`, значения отметок времени представляют последнюю миллисекунду дня.

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

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

## Пример 3. Скрипт day\_start

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

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

Обзор

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

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

Как и в предыдущем примере, вы создадите два новых поля:

* `deposit_due_date`: дата, когда должен быть получен авансовый платеж. Это окончание дня за три дня до `service_date`.

* `final_payment_due_date`: дата, когда должен быть получен окончательный платеж. Это окончание дня через семь дней после `service_date`.

Однако ваша компания хочет соблюдать следующее правило: рабочий день начинается в 17:00 и заканчивается в 17:00 следующего дня. Таким образом компания сможет осуществлять мониторинг транзакций в эти рабочие часы.

С целью удовлетворения этих требований создаются два вышеупомянутых поля в рамках предшествующей загрузки с использованием функции `dayend()` и всех трех параметров: `time`, `period_no` и `day_start`.

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

```
SET TimestampFormat='M/D/YYYY h:mm:ss[.fff] TT'; 

Services: 
   Load 
     *, 
     dayend(service_date,-3,17/24) as deposit_due_date, 
     dayend(service_date,7,17/24) as final_payment_due_date 
     ; 
Load 
service_id, 
service_date, 
amount 
Inline  
[ 
service_id, service_date,amount 
1,03/11/2022 9:25:14 AM,231.24 
2,03/12/2022 10:06:54 AM,567.28 
3,03/13/2022 10:44:42 AM,364.28 
4,03/14/2022 11:33:30 AM,575.76 
5,03/15/2022 12:58:14 PM,638.68 
6,03/16/2022 4:23:12 PM,785.38 
7,03/17/2022 6:42:15 PM,967.46 
8,03/18/2022 7:41:16 PM,287.67 
9,03/19/2022 8:14:15 PM,764.45 
10,03/20/2022 9:23:51 PM,875.43 
11,03/21/2022 10:04:41 PM,957.35 
]; 
```

Результаты

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

* `service_date`

* `deposit_due_date`

* `final_payment_due_date`

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

| service\_date | deposit\_due\_date | final\_payment\_due\_date |
| --- | --- | --- |
| 03/11/2022 9:25:14 AM | 3/8/2022 4:59:59 PM | 3/18/2022 4:59:59 PM |
| 03/12/2022 10:06:54 AM | 3/9/2022 4:59:59 PM | 3/19/2022 4:59:59 PM |
| 03/13/2022 10:44:42 AM | 3/10/2022 4:59:59 PM | 3/20/2022 4:59:59 PM |
| 03/14/2022 11:33:30 AM | 3/11/2022 4:59:59 PM | 3/21/2022 4:59:59 PM |
| 03/15/2022 12:58:14 PM | 3/12/2022 4:59:59 PM | 3/22/2022 4:59:59 PM |
| 03/16/2022 4:23:12 PM | 3/13/2022 4:59:59 PM | 3/23/2022 4:59:59 PM |
| 03/17/2022 6:42:15 PM | 3/14/2022 4:59:59 PM | 3/24/2022 4:59:59 PM |
| 03/18/2022 7:41:16 PM | 3/15/2022 4:59:59 PM | 3/25/2022 4:59:59 PM |
| 03/19/2022 8:14:15 PM | 3/16/2022 4:59:59 PM | 3/26/2022 4:59:59 PM |
| 03/20/2022 9:23:51 PM | 3/17/2022 4:59:59 PM | 3/27/2022 4:59:59 PM |
| 03/21/2022 10:04:41 PM | 3/18/2022 4:59:59 PM | 3/28/2022 4:59:59 PM |

Хотя даты остаются теми же, что и в примере 2, теперь их отметка времени — это последняя миллисекунда перед 17:00, так как третий аргумент, `day_start`, переданный в функцию `dayend()`, имеет значение 17/24.

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

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

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

Обзор

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

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

Как и в предыдущем примере, вы создадите два новых поля:

* deposit\_due\_date: дата, когда должен быть получен авансовый платеж. Это окончание дня за три дня до service\_date.

* final\_payment\_due\_date: дата, когда должен быть получен окончательный платеж. Это окончание дня через семь дней после service\_date.

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

```
SET TimestampFormat='M/D/YYYY h:mm:ss[.fff] TT'; 

Services: 
Load 
service_id, 
service_date, 
amount 
Inline  
[ 
service_id, service_date,amount 
1,03/11/2022 9:25:14 AM,231.24 
2,03/12/2022 10:06:54 AM,567.28 
3,03/13/2022 10:44:42 AM,364.28 
4,03/14/2022 11:33:30 AM,575.76 
5,03/15/2022 12:58:14 PM,638.68 
6,03/16/2022 4:23:12 PM,785.38 
7,03/17/2022 6:42:15 PM,967.46 
8,03/18/2022 7:41:16 PM,287.67 
9,03/19/2022 8:14:15 PM,764.45 
10,03/20/2022 9:23:51 PM,875.43 
11,03/21/2022 10:04:41 PM,957.35 
]; 
```

Результаты

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

service\_date.

Чтобы создать поле deposit\_due\_date, создайте эту меру:

=dayend(service\_date,-3,17/24).

Затем для создания поля final\_payment\_due\_date создайте эту меру:

=dayend(service\_date,7,17/24).

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

| service\_date | =dayend(service\_date,-3,17/24) | =dayend(service\_date,7,17/24 |
| --- | --- | --- |
| 03/11/2022 | 3/8/2022 16:59:59 PM | 3/18/2022 16:59:59 PM |
| 03/12/2022 | 3/9/2022 16:59:59 PM | 3/19/2022 16:59:59 PM |
| 13.03.2022 | 3/10/2022 16:59:59 PM | 3/20/2022 16:59:59 PM |
| 03/14/2022 | 3/11/2022 16:59:59 PM | 3/21/2022 16:59:59 PM |
| 03/15/2022 | 3/12/2022 16:59:59 PM | 3/22/2022 16:59:59 PM |
| 03/16/2022 | 3/13/2022 16:59:59 PM | 3/23/2022 16:59:59 PM |
| 03/17/2022 | 3/14/2022 16:59:59 PM | 3/24/2022 16:59:59 PM |
| 03/18/2022 | 3/15/2022 16:59:59 PM | 3/25/2022 16:59:59 PM |
| 03/19/2022 | 3/16/2022 16:59:59 PM | 3/26/2022 16:59:59 PM |
| 03/20/2022 | 3/17/2022 16:59:59 PM | 3/27/2022 16:59:59 PM |
| 03/21/2022 | 3/18/2022 16:59:59 PM | 3/28/2022 16:59:59 PM |

Значения новых полей находятся в TimestampFormat M/D/YYYY h:mm:ss[.fff] TT. Так как была использована функция dayend(), значения отметок времени представляют последнюю миллисекунду дня.

Значения срока платежа на три дня предшествуют сроку предоставления услуги, так как второй аргумент, переданный в функции dayend(), имеет отрицательное значение.

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

В качестве отметки времени дат указана последняя миллисекунда перед 17:00, так как третий аргумент, day\_start, переданный в функции dayend(), имеет значение 17/24.

## Подробнее

* [Загрузка данных из ранее загруженной таблицы](https://help.qlik.com/ru-RU/sense/November2025/Subsystems/Hub/Content/Sense_Hub/Scripting/load-data-from-previously-loaded-table.htm)

Аргументы

| Аргумент | Описание |
| --- | --- |
| time | Метка времени для вычисления. |
| period\_no | period\_no является целым числом или выражением, определяемым по целому числу, где значение 0 означает день, содержащий значение, указанное в полеtime. Отрицательные значения, заданные в поле period\_no, означают предшествующие дни, положительные — последующие. |
| day\_start | Чтобы указать, что дни начинаются не в полночь, укажите смещение в виде десятичного значения в параметре day\_start. Например, 0,125 обозначает 3:00. |