如何在BigQuery标准SQL中将指定格式字符串转为Timestamp?
解决BigQuery标准SQL解析时间字符串失败的问题
问题原因
使用PARSE_TIMESTAMP报错是因为未指定与输入字符串格式完全匹配的模式。输入字符串格式为2018/03/15 14:30:00.000,需要对应正确的格式符匹配分隔符、日期时间各部分及毫秒。
正确实现方案
1. 解析为Timestamp类型
若目标是得到BigQuery的Timestamp类型(内部以UTC时间点存储),执行以下语句:
PARSE_TIMESTAMP("%Y/%m/%d %H:%M:%E3S", "2018/03/15 14:30:00.000")
格式符说明:
%Y:4位年份%m:2位月份(01-12)%d:2位日期(01-31)%H:24小时制小时(00-23)%M:2位分钟(00-59)%E3S:带三位毫秒的秒数(如30.000)
如果输入时间本身属于UTC时区,可显式指定时区参数避免歧义:
PARSE_TIMESTAMP("%Y/%m/%d %H:%M:%E3S", "2018/03/15 14:30:00.000", "UTC")
2. 输出指定格式的字符串
若需要将解析后的Timestamp转换为2018-03-15 14:30:00 UTC格式的字符串,结合FORMAT_TIMESTAMP使用:
FORMAT_TIMESTAMP("%Y-%m-%d %H:%M:%S UTC", PARSE_TIMESTAMP("%Y/%m/%d %H:%M:%E3S", "2018/03/15 14:30:00.000"))
内容的提问来源于stack exchange,提问作者Goutham mano
相关产品推荐
相关产品推荐

