如何在AWS Athena中更优地将字符串月份转整数生成年月值
在AWS Athena中生成yearmon整数列的最优方案
不用硬编码CASE语句,你可以利用Athena的日期解析和格式化函数来实现,步骤如下:
- 拼接日期字符串:把年份(year)和英文月份缩写(month)组合成
yyyy-mon格式的字符串,比如2022-jan。 - 解析为日期类型:用
DATE_PARSE函数将拼接后的字符串转成日期,其中%b是匹配英文月份缩写的格式符(不区分大小写)。 - 格式化为年月字符串:用
DATE_FORMAT函数把日期转成YYYYMM格式的字符串,比如202201。 - 转为整数:最后将字符串类型的年月值强制转为整数。
完整SQL示例:
SELECT year, month, CAST(DATE_FORMAT(DATE_PARSE(CONCAT(year, '-', month), '%Y-%b'), '%Y%m') AS INT) AS yearmon FROM your_table;
关键点说明
- 你之前尝试的
month("jan")或cast("jan" as date)无效,是因为这些函数都需要日期类型输入,而不是纯月份字符串,必须先把年份和月份组合成可解析的日期格式才能处理。 - 这个方法无需维护12个CASE分支,只要月份缩写是标准格式(Jan/FEB等大小写都支持)就能正常解析,扩展性和维护性更好。
内容的提问来源于stack exchange,提问作者djm
相关产品推荐
相关产品推荐

