DatetimeDiff

datetimeDiff 取得兩個日期時間值之間的時間量,使用指定的時間單位。請注意,差異是以*整數*單位計算(請參閱以下範例)。

語法 範例
datetimeDiff(datetime1, datetime2, unit) datetimeDiff("2022-02-01", "2022-03-01", "month")
取得兩個日期時間之間的差異(datetime2 減去 datetime 1),使用指定的時間單位。 1

參數

datetime1datetime2 可以是

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

unit 可以是下列任何一個

  • “年”
  • “季”
  • “月”
  • “週”
  • “日”
  • “小時”
  • “分鐘”
  • “秒”

計算年齡

假設您是起司製造商,並且想要追蹤您的熟成過程

起司 熟成開始日期 熟成結束日期 熟成期(月)
義大利乾酪 2022 年 1 月 19 日 2022 年 3 月 17 日 1
費達起司 2022 年 1 月 25 日 2022 年 5 月 3 日 3
蒙特里傑克起司 2022 年 1 月 27 日 2022 年 10 月 11 日 8

熟成期(月)是具有以下表達式的自訂欄位

datetimeDiff([Aging Start], [Aging End], "month")

若要計算起司目前的*當前*熟成期(以月為單位),您可以使用 now 作為第二個日期時間參數,如下所示

datetimeDiff([Aging Start], now, "month")

若要計算起司目前的熟成期(以天為單位),您可以使用

datetimeDiff([Aging Start], now, "day")

接受的資料類型

資料類型 適用於 datetimeDiff
字串
數字
時間戳記
布林值
JSON

我們使用「時間戳記」和「日期時間」來指稱 Metabase 支援的任何時間資料類型。如需有關 Metabase 中這些資料類型的更多資訊,請參閱時區

如果您的時間戳記在資料庫中儲存為字串或數字,管理員可以從「表格元數據」頁面將它們轉換為時間戳記

限制

目前以下資料庫無法使用 `datetimeDiff

  • Druid

本節涵蓋與 Metabase datetimeDiff 表達式運作方式相同的函數和公式,並附註如何為您的使用案例選擇最佳選項。

SQL

當您使用查詢產生器執行問題時,Metabase 會將您的圖形化查詢設定(篩選器、摘要等)轉換為查詢,並針對您的資料庫執行該查詢以取得結果。

如果我們的起司範例資料儲存在 PostgreSQL 資料庫中

SELECT DATE_PART('month', AGE(aging_end, aging_start)) AS mature_age_months
FROM cheese

相當於 Metabase datetimeDiff 表達式

datetimeDiff([Aging Start], [Aging End], "month")

某些資料庫,例如 Snowflake 和 BigQuery,支援 DATEDIFFDATE_DIFF 等函數。如需更多資訊,請查看我們的常用 SQL 參考指南列表。

試算表

如果我們的起司範例資料位於試算表中,「熟成開始日期」位於 B 欄,「熟成結束日期」位於 C 欄

DATEDIF(B1, C1, "M")

產生與以下相同的結果

datetimeDiff([Aging Start], [Aging End], "month")

是的,DATEDIF 看起來有點奇怪,但試算表函數實際上是只有一個「f」的 DATEDIF(),而不是 DATEDIFF()

Python

假設起司範例資料位於名為 dfpandas 資料框架欄位中,您可以直接減去日期,並使用 numpytimedelta64 將差異轉換為月

df['Mature Age (Months)'] = (df['Aging End'] - df['Aging Start']) / np.timedelta64(1, 'M')

相當於

datetimeDiff([Aging Start], [Aging End], "month")

延伸閱讀

閱讀其他Metabase 版本的文件。