DatetimeAdd

datetimeAdd 接受一个日期时间值并向其添加某个时间单位。当您处理具有“开始”和“结束”标记的时间序列数据(例如会话或订阅数据)时,此函数非常有用。

语法 示例
datetimeAdd(列, 数量, 单位) datetimeAdd("2021-03-25", 1, "月")
接受时间戳或日期值,并向其添加指定数量的时间单位。 2021-04-25

参数

可以是以下任何一种

  • 时间戳列的名称,
  • 返回 日期时间 的自定义表达式,或者
  • 字符串格式为 "YYYY-MM-DD""YYYY-MM-DDTHH:MM:SS"(如上例所示)。

单位 可以是以下任何一种

  • “年”
  • “季度”
  • “月”
  • “日”
  • “小时”
  • “分钟”
  • “秒”
  • “毫秒”

数量:

  • 一个整数。您不能使用小数位值。例如,您不能添加“半年”(0.5)。
  • 可以是负数:datetimeAdd("2021-03-25", -1, "月") 将返回 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) 是否在 开封日期食用截止日期 之间 (between)

case(between(now, [Opened On], [Finish By]), "Yes", "No")

支持的数据类型

数据类型 datetimeAdd 配合使用
字符串是
数字
时间戳
布尔值
JSON

我们使用“时间戳”和“日期时间”来指代 Metabase 支持的任何时间数据类型。有关 Metabase 中这些数据类型的更多信息,请参阅 时区

如果您的时间戳在数据库中以字符串或数字形式存储,管理员可以从表元数据页面将其转换为时间戳

限制

如果您使用的是 MongoDB,datetimeAdd 仅适用于版本 5 及更高版本。

本节介绍与 Metabase datetimeAdd 表达式功能相同且具有相同工作方式的函数和公式,并附有如何为您的用例选择最佳选项的说明。

Metabase 表达式

其他工具

datetimeSubtract

datetimeSubtractdatetimeAdd 可以互换,因为您可以为 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

假设咖啡样本数据在名为 dfpandas 数据框列中,您可以导入 datetime 模块并使用 timedelta 函数

df['Finish By'] = df['Opened On'] + datetime.timedelta(days=14)

等同于

datetimeAdd([Opened On], 14, "day")

延伸阅读

阅读其他版本的 Metabase 的文档。

这有帮助吗?

感谢您的反馈!
想改进这些文档吗?建议修改。
© . This site is unofficial and not affiliated with Metabase, Inc.