BigQuery中如何将PARSE_DATE生成的日期指定为每月15日?
BigQuery将yyyymm字符串转为每月15日日期的解决方案
你可以通过两种简单方法实现把yyyymm格式的字符串转为当月15日的日期:
方法一:字符串拼接后解析
直接在yyyymm字符串末尾拼接'15',形成yyyymmdd格式的字符串,再用PARSE_DATE按%Y%m%d格式解析:
CREATE OR REPLACE TABLE project_id.dataset_id.tbl_new PARTITION BY sample_date AS SELECT *, PARSE_DATE('%Y%m%d', yyyymm || '15') AS sample_date FROM project_id.dataset_id.tbl
方法二:基于当月1日计算偏移
先将yyyymm解析为当月1日的日期,再用DATE_ADD添加14天得到当月15日:
CREATE OR REPLACE TABLE project_id.dataset_id.tbl_new PARTITION BY sample_date AS SELECT *, DATE_ADD(PARSE_DATE('%Y%m', yyyymm), INTERVAL 14 DAY) AS sample_date FROM project_id.dataset_id.tbl
为什么%Y%m15会报错?
PARSE_DATE的格式符必须和输入字符串的长度、结构完全匹配。你输入的yyyymm是6位字符串,%Y%m刚好对应6位数字;而%Y%m15会要求输入字符串是年+月+15的8位结构,但你的输入还是6位,因此触发invalid literal错误。
内容的提问来源于stack exchange,提问作者Saurabh
相关产品推荐
相关产品推荐

