如何解决BigQuery中YYYYMMDD与时分转DateTime的空格问题?
解决BigQuery中YYYYMMDD日期+时分转DateTime的问题
方法一:直接组合DATE和TIME生成DateTime
不用手动拼接字符串再转换,直接用原生函数构造,简洁且不会出现空格问题:
SELECT DATETIME( DATE(PARSE_DATE('%Y%m%d', date)), TIME(H.hour, H.minute, 0) ) AS full_datetime FROM your_table
PARSE_DATE('%Y%m%d', date)将YYYYMMDD格式的字符串转为DATE类型TIME(H.hour, H.minute, 0)用小时、分钟构造TIME类型DATETIME()函数直接合并DATE和TIME,生成标准DateTime类型
方法二:修复拼接逻辑并转换
如果坚持用拼接方式,改用FORMAT_STRING格式化时分避免空格,再转DateTime:
SELECT PARSE_DATETIME( '%Y-%m-%d %H:%M:%S', CONCAT( SUBSTR(date, 1, 4), '-', SUBSTR(date, 5, 2), '-', SUBSTR(date, 7, 2), ' ', FORMAT_STRING('%02d', H.hour), ':', FORMAT_STRING('%02d', H.minute), ':00' ) ) AS full_datetime FROM your_table
FORMAT_STRING('%02d', H.hour)确保小时是两位数字(如1转为01),不会产生空格PARSE_DATETIME直接将标准格式的字符串转为DateTime类型,自动完成格式校验
原始代码空格问题原因
你用的CAST(H.hour as string format '00')在BigQuery中,当小时/分钟是个位数时,会补空格而非0,导致拼接结果出现多余空格,改用FORMAT_STRING可以彻底解决这个问题。
内容的提问来源于stack exchange,提问作者tomas gonzalez villanueva
相关产品推荐
相关产品推荐

