BigQuery中字符串日期转日期并提取指定格式季度的问题
解决BigQuery中字符串转日期并生成季度格式列的问题
错误原因
你遇到的SQL_ANALYSIS_ERROR是因为EXTRACT函数不支持直接从字符串类型提取日期/时间部分,必须先将case_opening_date字符串转换为DATE类型。
解决方案
步骤1:字符串转日期
由于你的日期格式是YYYY-MM-DD,可以用PARSE_DATE('%Y-%m-%d', case_opening_date)将字符串转为DATE类型(如果字符串格式完全符合BigQuery默认日期格式,也可以直接用DATE(case_opening_date))。
步骤2:生成目标季度格式
通过提取季度和年份,拼接成季度(年份)的格式,有两种常用方式:
方式1:使用FORMAT函数(简洁写法)
SELECT *, FORMAT('%d(%d)', EXTRACT(QUARTER FROM PARSE_DATE('%Y-%m-%d', case_opening_date)), EXTRACT(YEAR FROM PARSE_DATE('%Y-%m-%d', case_opening_date)) ) AS quarter_year FROM MY_TABLE
方式2:使用CONCAT函数(直观写法)
先将字符串转为日期列,再拼接季度和年份:
WITH converted_dates AS ( SELECT *, PARSE_DATE('%Y-%m-%d', case_opening_date) AS opening_date FROM MY_TABLE ) SELECT *, CONCAT( EXTRACT(QUARTER FROM opening_date), '(', EXTRACT(YEAR FROM opening_date), ')' ) AS quarter_year FROM converted_dates
说明
PARSE_DATE的模板%Y-%m-%d完全匹配你的日期字符串格式,确保转换准确;- 两种写法都能生成如
1(2022)的目标格式,可根据习惯选择。
内容的提问来源于stack exchange,提问作者Jesus Navarro
相关产品推荐
相关产品推荐

