DatetimeAdd¶
datetimeAdd
принимает значение даты и времени и добавляет к нему некоторую единицу времени. Эта функция полезна при работе с данными временных рядов, помеченными «началом» и «концом», например с данными о сеансах или подписках.
| Синтаксис | Пример |
| ———————————————————————————- | ————————————— |
| datetimeAdd(column, amount, unit)
| datetimeAdd("2021-03-25", 1, "month")
|
| Принимает значение метки времени или даты и добавляет к нему указанное количество единиц времени. | 2021-04-25
|
Параметры¶
column
может быть любым из:
Имя столбца метки времени,
пользовательское выражение, которое возвращает datetime или
строка в формате
"YYYY-MM-DD"
или"YYYY-MM-DDTHH:MM:SS"
(как показано в примере выше).
unit
может быть любым из:
“год”
“квартал”
“месяц”
“день”
“час”
“минута”
“секунда”
“миллисекунда”
amount
:
Целое число или десятичное число.
Может быть отрицательным числом:
datetimeAdd("2021-03-25", -1, "month")
вернет2021-04-25
.
Расчет конечной даты¶
Допустим, вы знаток кофе и хотите следить за свежестью зерен:
| Кофе | Начало | Окончание | | ———————- | —————– | —————– | | DAK Honey Dude | October 31, 2022 | November 14, 2022 | | NO6 Full City Espresso | November 7, 2022 | November 21, 2022 | | Ghost Roaster Giakanja | November 27, 2022 | December 11, 2022 |
Здесь Окончание — это настраиваемый столбец с выражением:
datetimeAdd([Opened On], 14, 'day')
Проверка, попадает ли текущее время между интервалом¶
Допустим вы хотите проверить, попадает ли сегодняшняя дата между Начальной датой и Датой конца. Предположим, что сегодня — 1 декабря 2022 года.
| Кофейня | Открытие | Закрытие | Все еще актуально сегодня | |————————|——————-|——————-|—————————| | DAK Honey Dude | October 31, 2022 | November 14, 2022 | No | | NO6 Full City Espresso | November 7, 2022 | November 21, 2022 | No | | Ghost Roaster Giakanja | November 27, 2022 | December 11, 2022 | Yes |
Закрытие — это настраиваемый столбец с выражением:
datetimeAdd([Opened On], 14, 'day')
Все еще актуально сегодня использует case для проверки, попадает ли текущая дата (now) между датами в Открыто и Закрыто:
case(between(now, [Opened On], [Finish By]), "Yes", "No")
Допустимые типы данных¶
| Тип данных | Работает с datetimeAdd
|
|————————————————————————————————–| ———————— |
| Строка | ❌ |
| Число | ❌ |
| Дата Время | ✅ |
| Условие | ❌ |
| JSON | ❌ |
Мы используем «timestamp» и «datatime», чтобы говорить о любом временном типе данных, поддерживаемом GlarusBI. Для дополнительной информации о этих типах данных в GlarusBI см. Часовые пояса.
Если ваши временные метки хранятся в базе данных в виде строк или чисел, администратор может преобразовать их в временные метки на странице “Метаданные таблиц”.
Ограничения¶
Если вы используете MongoDB, datetimeAdd
будет работать только в версии 5 и выше.
Связанные функции¶
В этом разделе рассматриваются функции и формулы, которые работают так же, как выражение datetimeAdd
GlarusBI, с примечаниями о том, как выбрать лучший вариант для вашего случая использования.
Другие инструменты
Дата Время вычесть¶
datetimeSubtract
и datetimeAdd
взаимозаменяемы, так как вы можете использовать отрицательное число для amount
. Как правило, рекомендуется избегать двойных отрицаний (например, вычитания отрицательного числа).
datetimeSubtract([Opened On], -14, "day")
does the same thing as
datetimeAdd([Opened On], 14, "day")
SQL¶
Когда вы запускаете вопрос с помощью конструктора запросов, GlarusBI преобразует ваши графические настройки запроса (фильтры, сводки и т. д.) в запрос и запускает этот запрос. против вашей базы данных, чтобы получить ваши результаты.
Если наши данные образца кофе хранятся в базе данных PostgreSQL:
SELECT opened_on + INTERVAL '14 days' AS finish_by
FROM coffee
эквивалентно выражению datetimeAdd
в GlarusBI:
datetimeAdd([Opened On], 14, "day")
Таблицы¶
Если наши данные образца кофе находятся в электронной таблице, где «Открыто в» находится в столбце A с форматом даты, функция электронной таблицы
A:A + 14
выдает такой же результат как и
datetimeAdd([Opened On], 14, "day")
Большинство инструментов электронных таблиц требуют использования разных функций для разных единиц времени (для Примера вы должны использовать другую функцию, чтобы добавить «месяцы» к дате). datetimeAdd
упрощает преобразование всех этих функций в единый непротиворечивый синтаксис.
Python¶
Предполагая, что данные образца кофе находятся в столбце данных pandas
с именем df
, вы можете импортировать модуль datetime
и использовать функцию timedelta
:
df['Finish By'] = df['Opened On'] + datetime.timedelta(days=14)
эквивалентно:
datetimeAdd([Opened On], 14, "day")