DatetimeAdd
datetimeAdd
接受一个日期时间值,并向其添加一定的时间单位。当您处理以“开始”和“结束”标记的时间序列数据(例如会话或订阅数据)时,此函数非常有用。
语法 | 示例 |
---|---|
datetimeAdd(列, 数量, 单位) |
datetimeAdd("2021-03-25", 1, "month") |
接受时间戳或日期值,并向其添加指定的时间单位数。 | 2021-04-25 |
参数
列
可以是以下任何一种
- 时间戳列的名称,
- 返回 日期时间 的自定义表达式,或
- 格式为
"YYYY-MM-DD"
或"YYYY-MM-DDTHH:MM:SS"
的字符串(如上面的示例所示)。
单位
可以是以下任何一种
- “年”
- “季度”
- “月”
- “日”
- “小时”
- “分钟”
- “秒”
- “毫秒”
数量
:
- 整数。您不能使用小数值。例如,您不能添加“半年”(0.5)。
- 可以是负数:
datetimeAdd("2021-03-25", -1, "month")
将返回2021-04-25
。
计算结束日期
假设您是一位咖啡鉴赏家,并且想要跟踪咖啡豆的新鲜度
咖啡 | 开封日期 | 最佳饮用期 |
---|---|---|
DAK Honey Dude | 2022 年 10 月 31 日 | 2022 年 11 月 14 日 |
NO6 Full City Espresso | 2022 年 11 月 7 日 | 2022 年 11 月 21 日 |
Ghost Roaster Giakanja | 2022 年 11 月 27 日 | 2022 年 12 月 11 日 |
在这里,最佳饮用期 是一个带有表达式的自定义列
datetimeAdd([Opened On], 14, 'day')
检查当前日期时间是否在间隔内
假设您想要检查今天的日期是否在开始日期和 结束日期 之间。假设“今天”是 2022 年 12 月 1 日。
咖啡 | 开封日期 | 最佳饮用期 | 今天仍然新鲜 |
---|---|---|---|
DAK Honey Dude | 2022 年 10 月 31 日 | 2022 年 11 月 14 日 | 否 |
NO6 Full City Espresso | 2022 年 11 月 7 日 | 2022 年 11 月 21 日 | 否 |
Ghost Roaster Giakanja | 2022 年 11 月 27 日 | 2022 年 12 月 11 日 | 是 |
最佳饮用期 是一个带有表达式的自定义列
datetimeAdd([Opened On], 14, 'day')
今天仍然新鲜 使用 case 来检查当前日期 (now) 是否在 开封日期 和 最佳饮用期 之间的 之间
case(between(now, [Opened On], [Finish By]), "Yes", "No")
接受的数据类型
数据类型 | 适用于 datetimeAdd |
---|---|
字符串 | ❌ |
数字 | ❌ |
时间戳 | ✅ |
布尔值 | ❌ |
JSON | ❌ |
我们使用“时间戳”和“日期时间”来谈论 Metabase 支持的任何时间数据类型。有关 Metabase 中这些数据类型的更多信息,请参阅 时区。
如果您的时间戳在数据库中存储为字符串或数字,则管理员可以从“表元数据”页面 将其转换为时间戳。
局限性
如果您使用的是 MongoDB,则 datetimeAdd
仅适用于版本 5 及更高版本。
相关函数
本节介绍的功能和公式与 Metabase datetimeAdd
表达式的工作方式相同,并附带有关如何为您的用例选择最佳选项的说明。
其他工具
datetimeSubtract
datetimeSubtract
和 datetimeAdd
是可互换的,因为您可以将负数用于 amount
。通常,最好避免双重否定(例如,减去负数)。
datetimeSubtract([Opened On], -14, "day")
与以下操作相同
datetimeAdd([Opened On], 14, "day")
SQL
当您使用 查询构建器 运行问题时,Metabase 会将您的图形查询设置(筛选器、摘要等)转换为查询,并针对您的数据库运行该查询以获取结果。
如果我们的 咖啡示例数据 存储在 PostgreSQL 数据库中
SELECT opened_on + INTERVAL '14 days' AS finish_by
FROM coffee
等效于 Metabase datetimeAdd
表达式
datetimeAdd([Opened On], 14, "day")
电子表格
如果我们的 咖啡示例数据 在电子表格中,“开封日期”在 A 列中,格式为日期,则电子表格函数
A:A + 14
产生与以下操作相同的结果
datetimeAdd([Opened On], 14, "day")
大多数电子表格工具需要使用不同的函数来处理不同的时间单位(例如,您将使用不同的函数来向日期添加“月份”)。datetimeAdd
使您可以轻松地将所有这些函数转换为单个一致的语法。
Python
假设 咖啡示例数据 在名为 df
的 pandas
数据帧列中,您可以导入 datetime
模块并使用 timedelta
函数
df['Finish By'] = df['Opened On'] + datetime.timedelta(days=14)
等效于
datetimeAdd([Opened On], 14, "day")
延伸阅读
阅读其他 Metabase 版本 的文档。