Эта функция возвращает значение, соответствующее метке времени, включающей первую миллисекунду дня, содержащуюся в аргументе time. По умолчанию для вывода используется формат TimestampFormat, установленный в скрипте.
Синтаксис:
DayStart(time[, [period_no[, day_start]])
Возвращаемые типы данных: двойное значение
Аргументы
Аргумент
Описание
time
Метка времени для вычисления.
period_no
period_no является целым числом или выражением, определяемым по целому числу, где значение 0 означает день, содержащий значение, указанное в полеtime. Отрицательные значения, заданные в поле period_no, означают предшествующие дни, положительные — последующие.
day_start
Чтобы указать, что дни начинаются не в полночь, укажите смещение в виде десятичного значения в параметре day_start. Например, 0,125 обозначает 3:00.
Другими словами, чтобы создать смещение, разделите время начала на 24 часа. Например, чтобы день начинался в 7:00, используйте дробь 7/24.
Когда это следует использовать
Функция daystart() широко используется в составе выражения, когда пользователю требуется учитывать в расчетах часть дня, которая уже прошла. Например, с ее помощью можно вычислить совокупную заработную плату, заработанную сотрудниками за этот день по состоянию на текущий момент.
В этих примерах используется формат метки времени 'M/D/YYYY h:mm:ss[.fff] TT'. Формат метки времени указан в операторе SET TimeStamp в верхней части скрипта загрузки данных. Измените формат в примерах согласно своим пожеланиям.
Примеры функции
Пример
Результат
daystart('01/25/2013 4:45:00 PM')
Возвращает 1/25/2013 12:00:00 AM.
daystart('1/25/2013 4:45:00 PM', -1)
Возвращает 1/24/2013 12:00:00 AM.
daystart('1/25/2013 16:45:00',0,0.5
)
Возвращает 1/25/2013 12:00:00 PM.
Региональные настройки
Если не указано иное, в примерах, приведенных в данном разделе, используется следующий формат даты: ММ/ДД/ГГГГ. Формат даты указан в операторе SET DateFormat скрипта загрузки данных. В вашей системе может быть установлен другой формат даты по умолчанию в зависимости от региональных настроек и других факторов. Можно изменить формат в примерах в соответствии с потребностями. Или можно изменить форматы в скрипте загрузки в соответствии с этими примерами.
Региональные настройки по умолчанию в приложениях основаны на системных региональных настройках компьютера или сервера, где установлено ПО Qlik Sense. Если на сервере Qlik Sense, к которому обращается пользователь, выбран шведский язык, то редактор загрузки данных будет использовать шведские региональные настройки для даты, времени и валюты. Эти параметры регионального формата не связаны с языком, отображаемым в интерфейсе пользователя Qlik Sense. Qlik Sense будет отображаться на языке, который используется в браузере.
Пример 1. Простой пример
Обзор
Откройте редактор загрузки данных и добавьте приведенный ниже скрипт загрузки на новую вкладку.
Скрипт загрузки содержит следующее:
Простой набор данных, содержащий список дат и загруженный в таблицу под именем Calendar.
Используется системная переменная TimeStampFormat со значением по умолчанию (M/D/YYYY h:mm:ss[.fff] TT.
Предшествующая загрузка, создающая дополнительное поле под именем SOD_timestamp с использованием функции daystart().
Помимо даты, в функцию не передаются дополнительные параметры.
Скрипт загрузки
SET TimestampFormat='M/D/YYYY h:mm:ss[.fff] TT';
Calendar:
Load
date,
daystart(date) as SOD_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
SOD_timestamp
Результирующая таблица
date
SOD_timestamp
03/11/2022 1:47:15 AM
3/11/2022 12:00:00 AM
03/12/2022 4:34:58 AM
3/12/2022 12:00:00 AM
03/13/2022 5:15:55 AM
3/13/2022 12:00:00 AM
03/14/2022 9:25:14 AM
3/14/2022 12:00:00 AM
03/15/2022 10:06:54 AM
3/15/2022 12:00:00 AM
03/16/2022 10:44:42 AM
3/16/2022 12:00:00 AM
03/17/2022 11:33:30 AM
3/17/2022 12:00:00 AM
03/18/2022 12:58:14 PM
3/18/2022 12:00:00 AM
03/19/2022 4:23:12 PM
3/19/2022 12:00:00 AM
03/20/2022 6:42:15 PM
3/20/2022 12:00:00 AM
03/21/2022 7:41:16 PM
3/21/2022 12:00:00 AM
Как показано в приведенной выше таблице, отметка времени окончания дня генерируется для каждой даты в наборе данных. Для отметки времени используется формат системной переменной TimestampFormat M/D/YYYY h:mm:ss[.fff] TT.
Пример 2. Скрипт period_no
Обзор
Откройте редактор загрузки данных и добавьте приведенный ниже скрипт загрузки на новую вкладку.
Скрипт загрузки содержит следующее:
Набор данных, содержащий штрафы за парковку и загруженный в таблицу под именем Fines. Набор данных включает следующие поля:
id
due_date
number_plate
amount
Предшествующая загрузка с использованием функции daystart(), которая предоставляет все три параметра: time, period_no и day_start. Эта предшествующая загрузка создает следующие два новых поля даты:
Поле даты early_repayment_period за семь дней до срока оплаты.
Поле даты late_penalty_period через 14 дней после срока оплаты.
Загрузите данные и откройте лист. Создайте новую таблицу и добавьте эти поля как измерения:
due_date
early_repayment_period
late_penalty_period
Результирующая таблица
due_date
early_repayment_period
late_penalty_period
02/11/2022 9:25:14 AM
2/4/2022 12:00:00 AM
2/25/2022 12:00:00 AM
03/25/2022 10:06:54 AM
3/18/2022 12:00:00 AM
4/8/2022 12:00:00 AM
04/14/2022 10:44:42 AM
4/7/2022 12:00:00 AM
4/28/2022 12:00:00 AM
06/28/2022 11:33:30 AM
6/21/2022 12:00:00 AM
7/12/2022 12:00:00 AM
08/15/2022 12:58:14 PM
8/8/2022 12:00:00 AM
8/29/2022 12:00:00 AM
11/16/2022 4:23:12 PM
11/9/2022 12:00:00 AM
11/30/2022 12:00:00 AM
01/17/2023 6:42:15 PM
1/10/2023 12:00:00 AM
1/31/2023 12:00:00 AM
03/22/2023 7:41:16 PM
3/15/2023 12:00:00 AM
4/5/2023 12:00:00 AM
Значения новых полей находятся в TimestampFormat M/DD/YYYY tt. Так как была использована функция daystart(), все значения меток времени представляют первую миллисекунду дня.
Значения досрочного платежа на семь дней предшествуют сроку платежа, переданному во втором аргументе в функции daystart(), и являются отрицательными.
Значения просроченного платежа следуют через 14 дней после срока платежа, переданного во втором аргументе в функции daystart(), и являются положительными.
Пример 3. Скрипт day_start
Обзор
Откройте редактор загрузки данных и добавьте приведенный ниже скрипт загрузки на новую вкладку.
Скрипт загрузки содержит следующее:
Используется тот же набор данных и сценарий, что в предыдущем примере.
Используется та же предшествующая загрузка, что в предыдущем примере.
В этом примере начало и окончание рабочего дня устанавливается на 7:00 утра (7:00 AM) каждый день.
Загрузите данные и откройте лист. Создайте новую таблицу и добавьте эти поля как измерения:
due_date
early_repayment_period
late_penalty_period
Результирующая таблица
due_date
early_repayment_period
late_penalty_period
02/11/2022
2/3/2022 7:00:00 AM
2/24/2022 7:00:00 AM
03/25/2022
3/17/2022 7:00:00 AM
4/7/2022 7:00:00 AM
04/14/2022
4/6/2022 7:00:00 AM
4/27/2022 7:00:00 AM
06/28/2022
6/20/2022 7:00:00 AM
7/11/2022 7:00:00 AM
08/15/2022
8/7/2022 7:00:00 AM
8/28/2022 7:00:00 AM
11/16/2022
11/8/2022 7:00:00 AM
11/29/2022 7:00:00 AM
01/17/2023
1/9/2023 7:00:00 AM
1/30/2023 7:00:00 AM
03/22/2023
3/14/2023 7:00:00 AM
4/4/2023 7:00:00 AM
Теперь в качестве метки времени дат указано 7:00 AM, так как аргумент day_start, переданный в функции daystart(), имеет значение 7/24. В результате этого начало рабочего дня устанавливается на 7:00 утра.
Так как поле due_date не имеет метки времени, для него используется значение 12:00 AM (полночь), то есть оно относится к предыдущему дню, так как рабочий день начинается и заканчивается в 7:00 утра. Поэтому период досрочного погашения штрафа со сроком оплаты 11 февраля начинается 3 февраля в 7:00 утра.
Пример 4. Пример объекта диаграммы
Обзор
Откройте редактор загрузки данных и добавьте приведенный ниже скрипт загрузки на новую вкладку.
В этом примере используется тот же набор данных и сценарий, что в предыдущем примере.
Однако в приложение загружается только оригинальная таблица Fines с двумя дополнительными значениями сроков, вычисляемыми в объекте диаграммы.
Загрузите данные и откройте лист. Создайте новую таблицу и добавьте это поле как измерение: due_date.
Чтобы создать поле early_repayment_period, создайте следующую меру:
=daystart(due_date,-7,7/24)
Чтобы создать поле late_penalty_period, создайте следующую меру:
=daystart(due_date,14,7/24)
Результирующая таблица
due_date
=daystart(due_date,-7,7/24)
=daystart(due_date,14,7/24)
02/11/2022 9:25:14 AM
2/4/2022 7:00:00 AM
2/25/2022 7:00:00 AM
03/25/2022 10:06:54 AM
3/18/2022 7:00:00 AM
4/8/2022 7:00:00 AM
04/14/2022 10:44:42 AM
4/7/2022 7:00:00 AM
4/28/2022 7:00:00 AM
06/28/2022 11:33:30 AM
6/21/2022 7:00:00 AM
7/12/2022 7:00:00 AM
08/15/2022 12:58:14 PM
8/8/2022 7:00:00 AM
8/29/2022 7:00:00 AM
11/16/2022 4:23:12 PM
11/9/2022 7:00:00 AM
11/30/2022 7:00:00 AM
01/17/2023 6:42:15 PM
1/10/2023 7:00:00 AM
1/31/2023 7:00:00 AM
03/22/2023 7:41:16 PM
3/15/2023 7:00:00 AM
4/5/2023 7:00:00 AM
Значения новых полей находятся в TimestampFormat M/D/YYYY h:mm:ss[.fff] TT. Так как была использована функция daystart(), значения меток времени соответствуют первой миллисекунде дня.
Значения досрочного платежа на семь дней предшествуют сроку платежа, так как второй аргумент, переданный в функции daystart(), имеет отрицательное значение.
Значения просроченного платежа наступают через 14 дней после срока платежа, так как второй аргумент, переданный в функции daystart(), имеет положительное значение.
В качестве отметки времени дат указано 7:00 утра (7:00 AM), так как третий аргумент daystart(), переданный в функции day_start, имеет значение 7/24.
Помогла ли вам эта страница?
Если вы обнаружили какую-либо проблему на этой странице и с ее содержанием — будь то опечатка, пропущенный шаг или техническая ошибка, сообщите нам об этом, чтобы мы смогли ее исправить!