DatetimeAdd

datetimeAdd 接受日期時間值,並在其中加入一些時間單位。當您處理以「開始」和「結束」標記的時間序列資料(例如工作階段或訂閱資料)時,此函數非常有用。

語法 範例
datetimeAdd(欄位, 數量, 單位) datetimeAdd("2021-03-25", 1, "month")
接受時間戳記或日期值,並在其中加入指定的時間單位數量。 2021-04-25

參數

欄位 可以是以下任一項

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

單位 可以是以下任一項

  • 「年」
  • 「季」
  • 「月」
  • 「日」
  • 「小時」
  • 「分鐘」
  • 「秒」
  • 「毫秒」

數量:

  • 整數。您不能使用小數值。例如,您不能加入「半年」(0.5)。
  • 可以是負數:datetimeAdd("2021-03-25", -1, "month") 將傳回 2021-04-25

計算結束日期

假設您是咖啡鑑賞家,而且想要追蹤咖啡豆的新鮮度

咖啡 開封日 最佳賞味期
DAK Honey Dude 2022 年 10 月 31 日 2022 年 11 月 14 日
NO6 Full City Espresso 2022 年 11 月 7 日 2022 年 11 月 21 日
Ghost Roaster Giakanja 2022 年 11 月 27 日 2022 年 12 月 11 日

在這裡,「最佳賞味期」是具有以下運算式的自訂欄

datetimeAdd([Opened On], 14, 'day')

檢查目前的日期時間是否在間隔內

假設您想要檢查今天的日期是否落在開始日期和結束日期之間。假設「今天」是 2022 年 12 月 1 日。

咖啡 開封日 最佳賞味期 今天仍然新鮮
DAK Honey Dude 2022 年 10 月 31 日 2022 年 11 月 14 日
NO6 Full City Espresso 2022 年 11 月 7 日 2022 年 11 月 21 日
Ghost Roaster Giakanja 2022 年 11 月 27 日 2022 年 12 月 11 日

最佳賞味期」是具有以下運算式的自訂欄

datetimeAdd([Opened On], 14, 'day')

今天仍然新鮮」使用 case 來檢查目前的日期 (now) 是否介於開封日」和「最佳賞味期」之間的日期

case(between(now, [Opened On], [Finish By]), "Yes", "No")

接受的資料類型

資料類型 datetimeAdd 搭配使用
字串
數字
時間戳記
布林值
JSON

我們使用「時間戳記」和「日期時間」來談論 Metabase 支援的任何時間資料類型。如需 Metabase 中這些資料類型的詳細資訊,請參閱時區

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

限制

如果您使用的是 MongoDB,datetimeAdd 僅適用於 5 以上的版本。

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

Metabase 運算式

其他工具

datetimeSubtract

datetimeSubtractdatetimeAdd 是可互換的,因為您可以對 數量 使用負數。通常,最好避免雙重否定(例如減去負數)。

datetimeSubtract([Opened On], -14, "day")

與以下程式碼作用相同

datetimeAdd([Opened On], 14, "day")

SQL

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

如果我們的咖啡範例資料儲存在 PostgreSQL 資料庫中

SELECT opened_on + INTERVAL '14 days' AS finish_by
FROM coffee

相當於 Metabase datetimeAdd 運算式

datetimeAdd([Opened On], 14, "day")

試算表

如果我們的咖啡範例資料在試算表中,「開封日」位於 A 欄且具有日期格式,則試算表函數

A:A + 14

產生與以下程式碼相同的結果

datetimeAdd([Opened On], 14, "day")

大多數試算表工具都需要針對不同的時間單位使用不同的函數(例如,您會使用不同的函數將「月」加入日期)。datetimeAdd 可讓您輕鬆地將所有這些函數轉換為單一一致的語法。

Python

假設咖啡範例資料位於名為 dfpandas 資料框架欄中,您可以匯入 datetime 模組並使用 timedelta 函數

df['Finish By'] = df['Opened On'] + datetime.timedelta(days=14)

相當於

datetimeAdd([Opened On], 14, "day")

延伸閱讀

閱讀其他Metabase 版本的文件。