DatetimeSubtract

datetimeSubtract 接受日期時間值,並从中減去一些時間單位。當您處理以「開始」和「結束」標記的時間序列資料(例如工作階段或訂閱資料)時,可能會想要使用此函式。

語法 範例
datetimeSubtract(欄位, 數量, 單位) datetimeSubtract("2021-03-25", 1, "month")
採用時間戳記或日期值,並从中減去指定的時間單位數量。 2021-02-25

參數

column 可以是下列任一項

  • 時間戳記欄位的名稱、
  • 傳回日期時間的自訂表達式,或
  • 格式為 "YYYY-MM-DD""YYYY-MM-DDTHH:MM:SS" 的字串(如上述範例所示)。

unit 可以是下列任一項

  • “year”
  • “quarter”
  • “month”
  • “day”
  • “hour”
  • “minute”
  • “second”
  • “millisecond”

數量:

  • 整數。您無法使用小數值。例如,您無法減去「半年」(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 版本的文件。