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
表達式相同,並附註如何為您的使用案例選擇最佳選項。
其他工具
datetimeAdd
datetimeSubtract
和 datetimeAdd
是可互換的,因為您可以對 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
如果我們的活動範例資料位於名為 df
的 pandas
資料框架欄位中,您可以匯入 datetime
模組並使用 timedelta
函式
df['Depart At'] = df['Arrive By'] - datetime.timedelta(minutes=30)
相當於
datetimeSubtract([Arrive By], 30, "minute")
延伸閱讀
閱讀其他Metabase 版本的文件。