BigQuery中将字符串列转为DATETIME类型失败求助
解决BigQuery字符串转日期时间及上传类型识别问题
一、解析错误的原因及修复
你用的格式串'YY/MM/DD HH24:MI:SS'和数据格式不匹配:
- 数据中年份是4位(2016),但
YY只匹配2位年份,导致解析到第8位时格式不对应,触发报错。 - 数据的日期部分是
日/月/年(04/12/2016),而你指定的是年/月/日顺序,逻辑也不对。
正确的转换SQL应该用BigQuery支持的格式符,针对'04/12/2016 02:47:30'这种日/月/4位年 24小时:分:秒的格式,使用%d/%m/%Y %H:%M:%S作为格式参数:
-- 临时查询验证转换结果 SELECT DATETIME_PARSE(your_column_name, '%d/%m/%Y %H:%M:%S') AS converted_datetime FROM your_dataset.your_table; -- 若要永久修改表结构,可新增列并赋值 ALTER TABLE your_dataset.your_table ADD COLUMN converted_datetime DATETIME; UPDATE your_dataset.your_table SET converted_datetime = DATETIME_PARSE(your_column_name, '%d/%m/%Y %H:%M:%S') WHERE your_column_name IS NOT NULL;
二、CSV上传后列类型仍为STRING的处理
Google Sheets里转换日期类型后,导出CSV时还是会以文本格式存储原始的日期字符串(而非ISO标准格式),所以BigQuery依然识别为STRING。解决方式有两种:
- 方式一:在BigQuery中转换:直接用上面的SQL完成转换,无需修改原始文件。
- 方式二:修改源文件格式:在Google Sheets中将日期列转换为ISO标准格式(
YYYY-MM-DD HH:MM:SS),再导出CSV上传,此时BigQuery会自动识别为DATETIME类型。
内容的提问来源于stack exchange,提问作者Nikos Skolarikos
相关产品推荐
相关产品推荐

