现在
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
返回一个带时区的时间戳
,如果数据库支持时区,否则now
返回一个不带时区的时间戳
。
有关这些数据类型在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数据库的时区(通常是UTC)的now
SELECT CURRENT_TIME
电子表格
电子表格函数NOW()
获取您操作系统时区的当前日期和时间(您的电脑或移动设备上的时间)。
Python
您可以使用pd.Timestamp.now()
通过pandas
模块。这将给您一个包含您操作系统时区的当前日期和时间的Timestamp
对象。
进一步阅读
阅读其他 Metabase版本 的文档。