在Google BigQuery中将CSV字符串日期转换为mm/dd/yyyy格式报错求助
Google BigQuery 自定义格式日期转换解决方案
你遇到的报错核心原因是BigQuery默认的日期/时间解析函数无法自动识别MM/DD/YYYY hh:mm AM/PM这种带12小时制+AM/PM标记的美国格式日期字符串,需要手动指定格式字符串匹配原数据结构。
操作方法
1. 导入阶段规避预校验报错
通过BigQuery UI或API导入CSV时,先将该日期字段的类型设置为STRING类型完成导入,不要提前设置为DATE/DATETIME类型,避免导入阶段直接触发格式校验报错。
2. 调用内置函数完成格式转换
导入完成后使用PARSE_DATETIME函数手动指定匹配格式进行转换,示例SQL如下:
SELECT -- 先将字符串转为标准DATETIME类型 PARSE_DATETIME('%m/%d/%Y %I:%M %p', 你的日期字段名称) AS standard_datetime, -- 按需求转为mm/dd/yyyy格式的字符串 FORMAT_DATE('%m/%d/%Y', DATE(PARSE_DATETIME('%m/%d/%Y %I:%M %p', 你的日期字段名称))) AS target_date_str FROM 你的表名称
格式符对应说明:
%m:匹配两位数月份%d:匹配两位数日期%Y:匹配四位数年份%I:匹配12小时制的小时数值(不能使用24小时制的%H,否则会报错)%M:匹配两位数分钟数值%p:匹配AM/PM标识,大小写不敏感
3. 脏数据兼容优化
如果数据中存在部分格式异常的脏数据,可以给函数加上SAFE.前缀,异常行转换结果返回NULL,不会导致整条SQL执行失败:
SELECT SAFE.PARSE_DATETIME('%m/%d/%Y %I:%M %p', 你的日期字段名称) AS standard_datetime FROM 你的表名称
内容的提问来源于stack exchange,提问作者node1
相关产品推荐
相关产品推荐

