谷歌大数据控制台使用DAYNAME()函数提示不存在报错如何处理
报错原因
- 谷歌大数据控制台运行的是BigQuery SQL语法,和MySQL语法不通用,
DAYNAME()是MySQL专属函数,BigQuery没有内置该函数,因此触发函数不存在的报错:
Function not found: DAYNAME at [8:1]
实现获取星期名称的方案
方案1:使用FORMAT_DATE()函数(推荐)
这是BigQuery官方提供的原生日期格式化函数,适配性最高:
- 获取英文星期全称:
SELECT FORMAT_DATE("%A", DATE("2024-01-01")) AS week_name;
返回结果示例:Monday - 获取英文星期缩写:
SELECT FORMAT_DATE("%a", DATE("2024-01-01")) AS week_name;
返回结果示例:Mon - 获取中文星期名称,指定locale参数为
zh-CN即可:SELECT FORMAT_DATE("%A", DATE("2024-01-01"), "zh-CN") AS week_name;
返回结果示例:星期一
方案2:结合EXTRACT()+CASE WHEN自定义映射
如果需要自定义星期的返回内容,可以用该方案:
SELECT CASE EXTRACT(DAYOFWEEK FROM 你的日期字段) WHEN 1 THEN '周日' WHEN 2 THEN '周一' WHEN 3 THEN '周二' WHEN 4 THEN '周三' WHEN 5 THEN '周四' WHEN 6 THEN '周五' WHEN 7 THEN '周六' END AS custom_week_name FROM 你的表名
注意:BigQuery的DAYOFWEEK返回值规则为:1代表星期日,2代表星期一,以此类推,7代表星期六,映射时注意顺序不要写错。
内容的提问来源于stack exchange,提问作者Marwa Abd Elfattah
相关产品推荐
相关产品推荐

