如何在BigQuery中通过SQL将日期转换为星期几?
在BigQuery中根据指定格式日期返回星期几
要实现将06/10/2023这类MM/DD/YYYY格式的日期字符串转换为对应的星期全称(如Monday),可以通过BigQuery的日期解析与格式化函数组合完成:
核心思路
- 先将字符串格式的日期转换为BigQuery原生的
DATE类型 - 再将
DATE类型格式化为英文星期全称
示例代码
如果是直接处理单个日期字符串:
SELECT FORMAT_DATE("%A", PARSE_DATE("%m/%d/%Y", "06/10/2023")) AS day_of_week;
执行后会返回:
day_of_week ----------- Monday
如果是处理表中的日期字段(假设字段名为date_str):
SELECT date_str, FORMAT_DATE("%A", PARSE_DATE("%m/%d/%Y", date_str)) AS day_of_week FROM your_table_name;
函数说明
PARSE_DATE("%m/%d/%Y", date_str):按照MM/DD/YYYY的格式将字符串解析为DATE类型,其中%m代表两位月份,%d代表两位日期,%Y代表四位年份。FORMAT_DATE("%A", date_val):将DATE类型值格式化为英文星期全称,%A是对应的格式符(若需缩写星期名可改用%a,如Mon)。
容错处理
如果存在格式不合法的日期字符串,PARSE_DATE会返回NULL,甚至导致查询报错。可以使用SAFE.PARSE_DATE来避免报错,仅返回NULL:
SELECT date_str, FORMAT_DATE("%A", SAFE.PARSE_DATE("%m/%d/%Y", date_str)) AS day_of_week FROM your_table_name;
内容的提问来源于stack exchange,提问作者Rick
相关产品推荐
相关产品推荐

