在Azure Databricks SQL中将三位月份缩写转换为月份数字
在Azure Databricks SQL中将三位月份缩写转换为月份数字的方法
下面提供几种实用的实现方式,可根据你的数据情况选择:
方法1:利用日期转换函数(推荐标准缩写场景)
Azure Databricks SQL支持通过TO_DATE函数识别英文三位月份缩写,再用MONTH提取数字:
SELECT month_col, -- 直接转换标准英文缩写 MONTH(TO_DATE(month_col, 'MMM')) AS month_number FROM your_table;
如果数据存在大小写混合的情况(比如jan/JAN),可以先统一格式:
SELECT month_col, MONTH(TO_DATE(UPPER(month_col), 'MMM')) AS month_number FROM your_table;
方法2:CASE WHEN手动映射(适合自定义/非标准缩写)
如果月份缩写存在变体(比如Sept代替Sep),可以用CASE WHEN做精准映射:
SELECT month_col, CASE LOWER(month_col) WHEN 'jan' THEN 1 WHEN 'feb' THEN 2 WHEN 'mar' THEN 3 WHEN 'apr' THEN 4 WHEN 'may' THEN 5 WHEN 'jun' THEN 6 WHEN 'jul' THEN 7 WHEN 'aug' THEN 8 WHEN 'sep' THEN 9 WHEN 'sept' THEN 9 -- 兼容变体 WHEN 'oct' THEN 10 WHEN 'nov' THEN 11 WHEN 'dec' THEN 12 ELSE NULL -- 处理无效的缩写值 END AS month_number FROM your_table;
方法3:MAP字典映射(简洁的标准缩写处理)
用MAP函数创建缩写-数字的映射关系,代码更紧凑:
SELECT month_col, map( 'Jan',1, 'Feb',2, 'Mar',3, 'Apr',4, 'May',5, 'Jun',6, 'Jul',7, 'Aug',8, 'Sep',9, 'Oct',10, 'Nov',11, 'Dec',12 )[UPPER(month_col)] AS month_number FROM your_table;
实际使用示例(排序/比较)
转换后就可以直接用于排序或条件比较:
-- 按月份数字排序 SELECT * FROM your_table ORDER BY MONTH(TO_DATE(month_col, 'MMM')); -- 查询7-12月的数据 SELECT * FROM your_table WHERE MONTH(TO_DATE(month_col, 'MMM')) > 6;
内容的提问来源于stack exchange,提问作者learner
相关产品推荐
相关产品推荐

