在BigQuery中将STRING转DATE类型时遇格式识别问题
解决BigQuery中STRING转DATE的格式问题
问题出在两个核心点上:
PARSE_DATE的参数顺序搞反了,正确顺序是格式字符串在前,目标日期字符串在后- 格式符使用错误,你的日期是
单数字月/双数字日/四位年(比如5/15/2014),对应的格式符应该是%m/%d/%Y,而非%mm/%dd/%YYYY
正确的转换语句
SELECT SaleDate, PARSE_DATE('%m/%d/%Y', SaleDate) AS SaleDateConverted FROM your_table_name
错误原因拆解
- 直接CAST失败:
CAST(SaleDate AS DATE)要求字符串必须是BigQuery默认的日期格式(YYYY-MM-DD),你的5/15/2014不符合该规范,因此报错。 - PARSE_DATE参数顺序错误:你写的
PARSE_DATE(SaleDate, '%mm/%dd/%YYYY')把日期字符串放在了第一个参数位置,但BigQuery的PARSE_DATE函数定义是PARSE_DATE(format_string, date_string),顺序颠倒必然无法解析。 - 格式符不匹配:
%mm要求月份必须是两位数字(比如05),但你的数据是单数字(5),应该用%m(支持1位或2位月份)%YYYY是无效格式符,四位年份的正确写法是%Y
测试验证
执行以下语句可单独验证格式有效性:
SELECT PARSE_DATE('%m/%d/%Y', '5/15/2014') AS test_date
返回结果为2014-05-15,符合DATE类型的标准格式。
内容的提问来源于stack exchange,提问作者Ivan Manfredi
相关产品推荐
相关产品推荐

