现在

now 使用您 Metabase 的 报告时区 返回当前日期和时间。

使用当前日期或时间创建条件逻辑

假设您有一些项目数据,并且想要为每个任务添加一个状态列。我们假设今天的日期和时间是 2022 年 11 月 22 日,12:00:00。

任务 开始 截止日期 状态
草稿 2022 年 11 月 1 日,12:00:00 2022 年 11 月 30 日,12:00:00 进行中
审查 2022 年 11 月 15 日,12:00:00 2022 年 11 月 19 日,12:00:00 需要延期
编辑 2022 年 11 月 22 日,12:00:00 2022 年 11 月 22 日,12:00:00 立即到期!

要将任务标记为进行中,您可以使用表达式

now() >= [Start] AND now() < [Deadline]

要检查您是否需要请求延期

now() >= [Start] AND now() >= [Deadline]

如果您正在寻找肾上腺素的刺激(并且您拥有实时数据),您可以标记那些立即到期的任务

now() = [Deadline]

要设置结合以上三种情况的**状态**列,您需要将所有内容包装在 case 表达式中

case(now() >= [Start] AND now() < [Deadline], "In progress",
     now() >= [Start] AND now() >= [Deadline], "Needs extension",
     now() = [Deadline], "DUE RIGHT NOW!")

数据类型

数据类型 now() 返回的值
字符串是
数字
时间戳
布尔值
JSON

now 返回 timestamp with time zone(如果您的数据库支持时区),否则 now 返回 timestamp without time zone

有关这些数据类型在 Metabase 中行为方式的更多信息,请参阅 时区

限制

如果您不在 Metabase 报告时区所在的同一时区,那么 now 可能不是现在(在您的本地时间)。

如果您需要将 now 与不同时区的列进行比较,请使用 convertTimezone 将两个列移至同一时区。例如

convertTimezone(now, 'UTC', <report timezone>) >= convertTimezone([Deadline], 'UTC', <source time zone>)

做同一件事的不同方式,因为虽然您很乐意更多地使用自定义表达式,但现在不是时候。

SQL

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

默认情况下,now 使用您 Metabase 的 报告时区。如果您的管理员尚未设置报告时区,now 将使用您数据库的时区。

假设您正在使用 Postgres 数据库。如果您的 Metabase 报告时区设置为 EST,您将获得 EST 的 now

SELECT CURRENT_TIMESTAMP AT TIME ZONE 'EST'

如果您没有报告时区,您将获得 Postgres 数据库时区的 now(通常是 UTC)

SELECT CURRENT_TIME

电子表格

电子表格函数 NOW() 获取您操作系统时区的当前日期和时间(您电脑或移动设备上的时间)。

Python

您可以使用 pandas 模块使用 pd.Timestamp.now()。这将为您提供一个 Timestamp 对象,其中包含您操作系统时区的当前日期和时间。

延伸阅读

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

这有帮助吗?

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