BigQuery中带时区偏移的STRING转TIMESTAMP问题求助
解决字符串转带时区TIMESTAMP的问题
你的字符串格式2021-12-04 12:53:38:203-06:00有两个特殊点:毫秒部分用冒号分隔,时区是±HH:MM的偏移格式,之前的解析失败主要是格式符用错了,正确的写法如下:
直接解析为带时区的时间(最终存储为UTC TIMESTAMP)
使用PARSE_TIMESTAMP时,对应格式符要完全匹配字符串结构:
%Y:4位年份(不要用%y,那是两位年)%m-%d:月、日%H:%M:%S:%f:时、分、秒、毫秒(%f会识别冒号后的三位毫秒)%z:匹配±HH:MM的时区偏移(大写%Z是时区缩写,比如UTC、CST,不适用这里)
示例SQL:
SELECT PARSE_TIMESTAMP('%Y-%m-%d %H:%M:%S:%f%z', col1) AS converted_timestamp FROM your_table
转换为指定时区(比如UTC)
如果需要明确转成UTC时间,可以用TIMESTAMP_TRANSFORM函数:
SELECT TIMESTAMP_TRANSFORM( PARSE_TIMESTAMP('%Y-%m-%d %H:%M:%S:%f%z', col1), 'UTC' ) AS utc_timestamp FROM your_table
为什么之前的尝试失败?
TIMESTAMP(col1):BigQuery默认不识别冒号分隔的毫秒和这种格式的时区偏移,必须手动指定解析格式%y-%m-%d:%y是两位年份,和你的4位年份不匹配%E*S:这个格式符用于匹配带小数点的秒(比如12:53:38.203),不适用冒号分隔的情况%Z:对应时区缩写,无法匹配-06:00这种偏移量格式
内容的提问来源于stack exchange,提问作者kennemat
相关产品推荐
相关产品推荐

