如何使用 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 日(周三)

示例

以下“探索”查询示例显示了“订单商品日期”和“订单商品周”采用不同的格式,并以“创建日期”组标签进行整理,以模拟“探索”字段选择器中的日期维度组。

自定义格式会按降序向用户显示一年中的哪一天和哪周数对应的最大“项数”值。

如需详细了解如何使用 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 年份除以 100 并截断为整数 (00-99) 20
%d 一个月中的某天,填充零 (01-31) 23
%D 较短的 MM/DD/YY 日期,相当于 %m/%d/%y 2001 年 8 月 23 日
%e 一个月中的第几天,用空格填充 ( 1-31) 23
%F 较短的 YYYY-MM-DD 日期,相当于 %Y-%m-%d 2001 年 8 月 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 标识(小写) 下午
%r 12 小时制* 下午 2:55:02
%R 24 小时 HH:MM 时间,相当于 %H:%M 14:55
%s 自纪元 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 日期表示 * 2001 年 8 月 23 日
%X 时间表示法 * 14:55:02
%y 年 年份,最后两位数 (00-99) 1
%Y 年份 2001
%z 时区 UTC 的 ISO 8601 偏移量(1 分钟=1,1 小时=100)如果无法确定时区,则不能有任何字符 100
%Z 时区名称或缩写 *如果无法确定时区,则不得包含任何字符 美国中部夏令时间
%% % 符号 %