BigQuery中STRING类型startup_date字段提取纯日期值报错问询
BigQuery字符串日期提取报错解决方案
报错原因
当前代码触发报错主要有两个核心原因:
- 未使用安全解析函数,只要字段中存在任意一条不符合
DATETIME函数入参格式的内容(除空字符串外的非法格式值、带时区标识的时间字符串)都会直接触发全局报错 DATETIME类型本身不携带时区信息,无法直接解析字段中带UTC时区后缀的字符串
可用解决方案
方案1:通用格式自动识别(推荐,写法最简洁)
直接使用带SAFE.前缀的时间解析函数,解析失败自动返回NULL,不会触发报错:
DATE(SAFE.TIMESTAMP(startup_date))
SAFE.TIMESTAMP会自动适配2001-09-09 02:19:38.0 UTC这类带时区的标准时间字符串,外层套DATE()即可直接提取日期部分,不需要额外写EXTRACT逻辑。
方案2:指定格式严格解析(适合字段格式高度统一的场景)
如果字段时间格式完全固定,可以手动指定解析模板,兼容带小数的秒级精度和时区标识:
DATE(SAFE.PARSE_TIMESTAMP("%Y-%m-%d %H:%M:%E*S %Z", startup_date))
模板参数说明:
%Y-%m-%d:匹配年-月-日%H:%M:%E*S:匹配时:分:秒(支持任意位小数的秒精度)%Z:匹配UTC这类时区标识
内容的提问来源于stack exchange,提问作者Ram
相关产品推荐
相关产品推荐

