日期时间加

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.0及更高版本上工作。

本节介绍了与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 dataframe 列中,您可以导入 datetime 模块并使用 timedelta 函数

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

等价于...

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

进一步阅读

阅读 Metabase 的其他 版本文档

想改进这些文档? 提出更改。