BigQuery中如何从数据表提取日期对应的星期名称?
从数据表日期字段动态提取星期名称的实现方法
你不需要手动给日期函数传入固定写死的日期参数。你之前测试用的SELECT DAYNAME("2017-06-15");是给函数传入了字符串常量作为入参,而DAYNAME()这类日期处理函数本身支持直接传入数据表的日期类型字段作为入参,执行查询时会逐行读取对应字段的值,自动计算返回每行对应的星期名称。
举个实际使用的例子,假设你有一张业务数据表sales_data,表中存储交易日期的字段为deal_date,直接按如下写法查询即可:
SELECT deal_date, DAYNAME(deal_date) AS deal_weekday FROM sales_data;
不同数据库的适配写法
如果你的数据库环境不支持DAYNAME()函数,可以对应使用各数据库的原生语法实现:
- MySQL / MariaDB / PostgreSQL:直接使用上面的
DAYNAME(日期字段)写法即可,返回结果为对应星期的英文名称 - SQL Server:使用
DATENAME函数,写法为SELECT DATENAME(weekday, 日期字段) FROM 表名; - Oracle:使用
TO_CHAR函数做格式转换,写法为SELECT TO_CHAR(日期字段, 'DAY') FROM 表名;
注意:传入函数的字段需要是DATE、DATETIME、TIMESTAMP这类合法的日期类型,如果是字符串格式存储的日期,需要先做日期格式转换再传入函数,否则会返回计算错误或空值。
内容的提问来源于stack exchange,提问作者Dania Hijazi
相关产品推荐
相关产品推荐

