如何在BigQuery中从分区时间获取月份名及从current_date()提取月份数字
BigQuery 月份提取操作解决方案
你之前使用
MONTH(current_date())得到月份名称,是因为当前SQL运行在Legacy SQL模式下,BigQuery标准SQL模式中MONTH()默认返回1-12的月份数字。
1. 从分区时间中获取月份名称
使用标准SQL的FORMAT_DATE函数即可自定义返回月份名称格式:
- 全拼月份名称(如January、十月):
SELECT FORMAT_DATE("%B", DATE(_PARTITIONTIME)) AS full_month_name FROM `你的项目.你的数据集.你的表名` - 缩写月份名称(如Jan、10月):
SELECT FORMAT_DATE("%b", DATE(_PARTITIONTIME)) AS short_month_name FROM `你的项目.你的数据集.你的表名`
如果是自定义的时间分区字段,替换DATE(_PARTITIONTIME)为对应的日期/时间字段即可。
2. 从current_date()中提取月份数字
两种通用方案,覆盖标准SQL和Legacy SQL场景:
- 标准SQL方案(推荐,BigQuery当前默认模式):
可以直接用EXTRACT函数或者原生MONTH函数:
两种写法都会返回1-12范围内的整数月份值。-- 写法1:EXTRACT函数,可读性更高 SELECT EXTRACT(MONTH FROM CURRENT_DATE()) AS month_number -- 写法2:直接调用MONTH函数 SELECT MONTH(CURRENT_DATE()) AS month_number - Legacy SQL兼容方案:
如果必须使用Legacy SQL模式,调用MONTH_IN_YEAR函数获取数字月份:SELECT MONTH_IN_YEAR(CURRENT_DATE()) AS month_number
内容的提问来源于stack exchange,提问作者exploding_data
相关产品推荐
相关产品推荐

