DatetimeSubtract

datetimeSubtract 接受一个日期时间值并从中减去某个时间单位。您可能希望在使用时间序列数据时使用此函数,这些数据以“开始”和“结束”标记,例如会话或订阅数据。

语法 示例
datetimeSubtract(列, 数量, 单位) datetimeSubtract("2021-03-25", 1, "month")
接受时间戳或日期值,并从中减去指定数量的时间单位。 2021-02-25

参数

可以是以下任何一种

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

单位 可以是以下任何一种

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

数量:

  • 整数。您不能使用小数。例如,您不能减去“半年” (0.5)。
  • 可以是负数:datetimeSubtract("2021-03-25", -1, "month") 将返回 2021-04-25

计算开始日期

假设您正在计划一个有趣的夜晚。您知道从一个地方到另一个地方需要 30 分钟,您需要弄清楚您必须在什么时间出发才能赶上您的每个预订

事件 抵达时间 出发时间
酒水 2022 年 11 月 12 日 晚上 6:30 2022 年 11 月 12 日 晚上 6:00
晚餐 2022 年 11 月 12 日 晚上 8:00 2022 年 11 月 12 日 晚上 7:30
跳舞 2022 年 11 月 13 日 凌晨 12:00 2022 年 11 月 12 日 晚上 11:30

这里,出发时间是一个自定义列,其表达式为

datetimeSubtract([Arrive By], 30, "minute")

检查当前日期时间是否在某个时间间隔内

假设您想检查当前日期时间是否落在开始日期和结束日期之间。假设“当前”日期时间是 11 月 12 日 晚上 7:45。

事件 抵达时间 出发时间 路上
酒水 2022 年 11 月 12 日 晚上 6:30 2022 年 11 月 12 日 晚上 6:00
晚餐 2022 年 11 月 12 日 晚上 8:00 2022 年 11 月 12 日 晚上 7:30
跳舞 2022 年 11 月 13 日 凌晨 12:00 2022 年 11 月 12 日 晚上 11:30

出发时间是一个自定义列,其表达式为

datetimeSubtract([Arrive By], 30, "minute")

路上使用 case 来检查当前日期时间 (now) 是否在 抵达时间出发时间 的日期时间之间

case(between(now, [Depart At], [Arrive By]), "Yes", "No")

支持的数据类型

数据类型 适用于 datetimeSubtract
字符串是
数字
时间戳
布尔值
JSON

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

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

限制

如果您正在使用 MongoDB,datetimeSubtract 只适用于版本 5 及以上。

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

Metabase 表达式

其他工具

datetimeAdd

datetimeSubtractdatetimeAdd 可以互换,因为您可以为 amount 使用负数。我们可以在事件示例中使用任一表达式,但应避免“双重否定”(例如减去负数)。

datetimeAdd([Arrive By], -30, "minute")

做同样的事情

datetimeSubtract([Arrive By], 30, "minute")

SQL

当您使用查询构建器运行查询时,Metabase 会将您的图形查询设置(过滤器、摘要等)转换为查询,并针对您的数据库运行该查询以获取结果。

如果我们的事件示例数据存储在 PostgreSQL 数据库中

SELECT arrive_by - INTERVAL '30 minutes' AS depart_at
FROM events

等同于 Metabase datetimeSubtract 表达式

datetimeSubtract([Arrive By], 30, "minute")

电子表格

假设事件示例数据在一个电子表格中,其中“抵达时间”位于 A 列且为日期时间格式,则电子表格函数为

A:A - 30/(60*24)

产生与以下结果相同的结果

datetimeSubtract([Arrive By], 30, "minute")

大多数电子表格要求您对不同的时间单位使用不同的计算(例如,您需要使用不同的计算来从日期中减去“天数”)。datetimeSubtract 使您能够轻松地将所有这些函数转换为单一的一致语法。

Python

如果我们的事件示例数据在名为dfpandas数据框列中,您可以导入datetime模块并使用timedelta函数

df['Depart At'] = df['Arrive By'] - datetime.timedelta(minutes=30)

等同于

datetimeSubtract([Arrive By], 30, "minute")

延伸阅读

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

这有帮助吗?

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