BigQuery字符串转日期报错:仅年份字符串无法转换
解决BigQuery中字符串转日期的异常处理问题
针对你遇到的仅年份字符串无法转换为日期的问题,可以通过条件判断+补全年月日的方式在SELECT语句中处理,避免报错并将"1999"转为1999-01-01,具体有两种常用方案:
方案一:通过长度判断针对性处理
利用字符串长度识别仅含年份的记录,补全-01-01后再转换,其他正常格式直接转换:
SELECT MIN( CASE WHEN LENGTH(add_timestamp) = 4 THEN CAST(CONCAT(add_timestamp, '-01-01') AS DATE) ELSE CAST(add_timestamp AS DATE) END ) AS date_added FROM your_table_name
方案二:结合SAFE_CAST容错处理
先用SAFE_CAST尝试转换合法日期格式,转换失败(返回NULL)时再补全年月日处理,这种方式能兼容更多潜在的格式异常:
SELECT MIN( COALESCE( SAFE_CAST(add_timestamp AS DATE), CAST(CONCAT(add_timestamp, '-01-01') AS DATE) ) ) AS date_added FROM your_table_name
说明
SAFE_CAST是BigQuery的安全转换函数,遇到不合法的日期字符串不会抛出错误,而是返回NULL;COALESCE会优先取第一个非NULL的值,也就是先尝试正常转换,失败时再用补全后的字符串转日期;- 如果数据中还有其他异常格式(比如仅年月"2020-05"),可以继续扩展CASE条件,补全对应的日(如
-01)后再转换。
内容的提问来源于stack exchange,提问作者soph056794
相关产品推荐
相关产品推荐

