DatetimeDiff
datetimeDiff
取得兩個日期時間值之間的時間量,使用指定的時間單位。請注意,差異是以*整數*單位計算(請參閱以下範例)。
語法 | 範例 |
---|---|
datetimeDiff(datetime1, datetime2, unit) |
datetimeDiff("2022-02-01", "2022-03-01", "month") |
取得兩個日期時間之間的差異(datetime2 減去 datetime 1),使用指定的時間單位。 | 1 |
參數
datetime1
和 datetime2
可以是
- 時間戳記欄位的名稱、
- 傳回日期時間的自訂表達式,或
- 格式為 `\"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,支援 DATEDIFF
或 DATE_DIFF
等函數。如需更多資訊,請查看我們的常用 SQL 參考指南列表。
試算表
如果我們的起司範例資料位於試算表中,「熟成開始日期」位於 B 欄,「熟成結束日期」位於 C 欄
DATEDIF(B1, C1, "M")
產生與以下相同的結果
datetimeDiff([Aging Start], [Aging End], "month")
是的,DATEDIF
看起來有點奇怪,但試算表函數實際上是只有一個「f」的 DATEDIF()
,而不是 DATEDIFF()
。
Python
假設起司範例資料位於名為 df
的 pandas
資料框架欄位中,您可以直接減去日期,並使用 numpy
的 timedelta64
將差異轉換為月
df['Mature Age (Months)'] = (df['Aging End'] - df['Aging Start']) / np.timedelta64(1, 'M')
相當於
datetimeDiff([Aging Start], [Aging End], "month")
延伸閱讀
閱讀其他Metabase 版本的文件。