You need to enable JavaScript to run this app. 如何在BigQuery中获取mmm-yy格式的日期值(如Dec-20)
优惠活动
大模型
产品
解决方案
定价
更多

如何在BigQuery中获取mmm-yy格式的日期值(如Dec-20)

BigQuery 输出 mmm-yy 格式(如"Dec-20")的最佳实现方案

推荐核心实现(原生函数,零额外维护成本)

直接调用BigQuery内置的FORMAT_DATE()函数搭配对应格式掩码就能实现需求,这是目前性能最好、长期维护成本最低的方案——不需要手写月份映射字典,也不需要手动拼接字符串。

两个核心格式掩码和需求的匹配度完全对齐:

  • %b:输出标准三字母月份缩写,en-US环境下的返回值就是Jan、Feb、Mar……Dec,和示例里的"Dec"格式完全一致
  • %y:输出两位数字的短年份,比如2020年就返回20,正好匹配需求里的两位年份后缀

基础用法代码示例:

-- 针对DATE类型字段直接转换
SELECT FORMAT_DATE('%b-%y', target_date_column) AS formatted_mmm_yy
FROM your_table;

-- 如果源字段是DATETIME/TIMESTAMP类型,先转换为DATE格式再做格式化
SELECT FORMAT_DATE('%b-%y', DATE(target_datetime_or_ts_column)) AS formatted_mmm_yy
FROM your_table;

关键避坑提示

  • 强制固定英文输出避免区域适配问题:如果你的项目默认区域不是en-US,直接用默认参数调用函数的话,%b会返回当前区域语言下的月份缩写,比如中文项目会输出"12月"、法语项目会输出"Déc",和需要的英文缩写格式不符。这时候只要在函数里显式指定en-US语言参数,就能稳定输出标准英文缩写:
    SELECT FORMAT_DATE('%b-%y', target_date_column, 'en_US') AS formatted_mmm_yy
    FROM your_table;
    
  • 别混用容易搞错的格式掩码:很多人会写错格式导致结果不对:
    • 不要用%m代替%b:%m返回的是两位数字的月份值(比如12代表12月),不是文字形式的缩写
    • 不要用%Y代替%y:%Y返回的是四位完整年份(比如2024),不是需求要的两位短年份
  • 别用冗余的硬编码写法:手写CASE语句做月份映射(比如写一长串CASE WHEN EXTRACT(MONTH FROM date) = 12 THEN 'Dec' ... END)的方法完全不推荐,代码冗余、容易漏写边界值、后期维护成本极高,效率远不如原生函数。

内容的提问来源于stack exchange,提问作者Indi Singh Sall

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.11.03 06:36:04