如何使用 Liquid 格式化日期

在某些情況下,您可能需要變更 Looker 格式日期的方式。

舉例來說,如果您要為歐洲使用者建立探索和資訊主頁,則所有以全數字格式表示的日期都應以「日-月-年」的順序顯示。舉例來說,2019 年 6 月 7 日的格式應為 07/06/2019Jun 07, 2019。Looker 的預設格式會將日期顯示為 2019-06-07。雖然您可以使用 DATE_FORMAT() 等 SQL 函式變更日期格式,但不建議您將所有內容都寫入一般 SQL。

html 參數中使用 Liquid

您可以在維度的 html 參數中使用流動格式,變更任何使用有效日期格式的欄位格式。由於 Liquid 需要有效的日期,因此建議您使用現有維度群組的時間範圍。您無法變更週或月編號,因為這些值會以整數形式傳回。

舉例來說,您可以將 ${created_date} 的格式設為 Aug 23 22,而非 Looker 的預設 2022-08-23


  dimension: date_formatted {
    sql: ${created_date} ;;
    html:{{ rendered_value | date: "%b %d, %y" }};;
  }


字串語法 "%b %d, %y" 的格式與 strftime 相同。

由於 html 參數使用 Liquid 格式,因此時間範圍的原始值不會變更,只有呈現給使用者的值會變更。這樣可確保日期在查詢中顯示的順序不會變更。

以下列舉其他可用範例。如需查看可用格式的詳細參考資料,請參閱本頁底部。

預設值 範例
%m/%d/%Y 2013 年 6 月 5 日
%A, %B %e, %Y 2013 年 6 月 5 日星期三
%b %e %a 6 月 5 日星期三

範例

以下探索查詢範例顯示「Order Items Date」和「Orders Items Week」的格式不同,並在「Created date」群組標籤下方排列,模擬探索欄位挑選器中的日期維度群組。

自訂格式會向使用者顯示,哪些日期和年份的週數對應到最大的項目計數值,並以降冪順序排序。

如要進一步瞭解如何使用 group_label 參數,請參閱 group_label 說明文件頁面

探索查詢會針對「訂單商品日期」和「訂單商品週」,以「訂單商品數量」遞減排序,並以自訂日期格式呈現結果。

LookML

探索範例使用以下 LookML:



# The original dimension group - hidden so that users can only choose from the formatted dates date and week timeframes
  dimension_group: created {
    hidden: yes
    type: time
    timeframes: [
      raw,
      time,
      date,
      hour,
      hour_of_day,
      time_of_day,
      week,
      month,
      quarter,
      year
    ]
    sql: ${TABLE}.created_at ;;
  }

# The customized timeframes, organized in the Explore field picker under the group label Created date
  dimension: date_formatted {
    group_label: "Created date"
    label: "Date"
    type: date_raw
    sql: ${created_date} ;;
    html: {{ rendered_value | date: "%b %d, %y" }};;
  }

  dimension: week_formatted {
    group_label: "Created date"
    label: "Week"
    type: date_raw
    sql: ${created_week} ;;
    html: {{ rendered_value | date: "Week %U (%b %d)" }};;
  }


strftime Reference

下表列出各種 strftime 格式。請注意,並非所有格式都能在 Looker 中正常顯示。

指定符 已替換為 範例
%a 星期幾名稱縮寫 * 週四
%A 星期幾完整名稱 * 星期四
%b 縮寫的月份名稱 * 8 月
%B 完整月份名稱 * 8 月
%c 日期和時間表示法 * 2001 年 8 月 23 日星期四 14:55:02
%C 以整數 (00-99) 表示的年份 (除以 100 並截斷) 20
%d 每月第幾天,前面補零 (01-31) 23
%D 短格式 MM/DD/YY 日期,等同於 %m/%d/%y 08/23/01
%e 一個月內的第幾天,以空格填滿 ( 1-31) 23
%F 短格式 YYYY-MM-DD 日期,等同於 %Y-%m-%d 2001-08-23
%g 以週為單位的年份,末兩碼 (00-99) 1
%G 以週為週期 2001
%h 縮寫的月份名稱 * (與 %b 相同) 8 月
%H 小時,以 24 小時制表示 (00-23) 14
%I 12 小時制格式的小時 (01-12) 02
%j 一年中的日期 (001-366) 235
%k 以 24 小時制表示的時刻,單一數字前面會加上空格 (0-23) 14
%l 以 12 小時制表示的時刻,單一數字前面會加上空格 (0-12) 2
%m 以十進位數字 (01-12) 表示的月份。 8
%M 分鐘 (00-59) 55
%n 換行字元 '\n'
%P am 或 pm 標記 (小寫) pm
%r 12 小時制時間 * 下午 2:55:02
%R 24 小時制 HH:MM 時間,等同於 %H:%M 14:55
%s 自 Epoch 1970-01-01 00:00:00 +0000 (UTC) 算起的秒數 1566236649
%S 秒 (00-61) 2
%t 水平定位字元 ("'\t'")
%T ISO 8601 時間格式 (HH:MM:SS),等同於 %H:%M:%S 14:55:02
%u ISO 8601 星期幾以數字表示,星期一為 1 (1-7) 4
%U 以第一個星期日做為第一週的第一天,計算出週數 (00-53) 33
%V ISO 8601 週數 (01-53) 34
%w 以十進位數字表示的星期幾,星期日為 0 (0-6) 4
%W 以第一個星期一為第一週第一天的週數 (00-53) 34
%x 日期表示法 * 08/23/01
%X 時間表示法 * 14:55:02
%y 年份,末兩碼 (00-99) 1
%Y 年份 2001
%z ISO 8601 時區與世界標準時間的時差 (1 分鐘=1、1 小時=100)。如果無法判斷時區,則不顯示任何字元 100
%Z 時區名稱或縮寫 *如果無法判斷時區,則不顯示任何字元 CDT
%% 百分比符號 % %