BigQuery SQL如何将UTC时间日期列转换为1-7范围的星期值
你使用的EXTRACT(DAYOFWEEK FROM ...) 函数本身就符合你的需求:BigQuery 标准SQL中该函数的返回值规则就是1代表周日、7代表周六,无需额外做数值偏移调整。
你当前的语句只对固定日期生效,是因为你硬编码了指定日期值,只要把硬编码部分替换为你表中的时间日期列名即可应用到整行数据。
不同场景的写法参考
- 若你的时间列是
TIMESTAMP/DATETIME类型(你给出的示例格式符合这两类类型的存储规则),直接传入列名即可:
SELECT -- 保留原有所有列,新增星期几列 *, EXTRACT(DAYOFWEEK FROM 你的时间列名) AS week_day FROM 你的表名
- 若你的时间列是字符串格式存储,需要先解析为TIMESTAMP类型再提取:
SELECT *, EXTRACT(DAYOFWEEK FROM PARSE_TIMESTAMP("%Y-%m-%d %H:%M:%S UTC", 你的字符串时间列名)) AS week_day FROM 你的表名
你可以用你示例中的时间验证:2020-11-14 16:04:15 UTC对应周六,该函数返回值为7,符合你的要求。
内容的提问来源于stack exchange,提问作者Marcus
相关产品推荐
相关产品推荐

