BigQuery插入TIMESTAMP列报错:无法转换指定时间戳字符串
BigQuery TIMESTAMP插入报错的原因及解决办法
问题原因
BigQuery的TIMESTAMP类型仅支持微秒级精度(最多6位小数),你提供的时间戳"2024-07-02T10:46:58.108707769"包含9位小数(纳秒精度),超出了TIMESTAMP的精度范围,所以直接CAST会触发报错。
解决方法
方法1:截断到6位小数
通过字符串处理保留前6位小数,再转为TIMESTAMP:
-- 截取字符串前26位(刚好到微秒位) CAST(SUBSTR("2024-07-02T10:46:58.108707769", 1, 26) AS TIMESTAMP) -- 用正则替换截断多余小数位 CAST(REGEXP_REPLACE("2024-07-02T10:46:58.108707769", r'(\.\d{6})\d+', r'\1') AS TIMESTAMP)
方法2:用PARSE_TIMESTAMP指定解析格式
明确指定纳秒精度的解析格式,BigQuery会自动截断到微秒:
PARSE_TIMESTAMP("%Y-%m-%dT%H:%M:%E9S", "2024-07-02T10:46:58.108707769")
内容的提问来源于stack exchange,提问作者BugsOverflow
相关产品推荐
相关产品推荐

