You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Amazon Athena中字符串转日期:mmm-dd-yyyy转yyyy-mm-dd方法

在Amazon Athena中将mmm-dd-yyyy格式字符串转换为yyyy-mm-dd日期的解决方案

我之前在处理Athena的日志数据时正好遇到过这个需求,用Presto的日期函数就能轻松搞定,给你两种实用的方案,按需选择就行:

方法1:转换为DATE类型(推荐)

如果后续需要对这个日期做筛选、计算(比如求日期差、按月份聚合),强烈推荐把字符串转换成DATE类型——Athena里的DATE类型默认显示格式就是yyyy-mm-dd,而且能直接支持所有日期相关的SQL操作。

使用date_parse()函数解析字符串,语法如下:

SELECT date_parse('Nov-06-2015', '%b-%d-%Y') AS converted_date;

参数说明:

  • %b:匹配英文月份缩写(比如Nov、Jan),Presto对大小写不敏感,所以nov也能正常解析
  • %d:匹配两位数字的日期(比如06、23)
  • %Y:匹配四位数字的年份(比如2015)

执行这条语句后,返回的结果就是2015-11-06,类型为DATE。

方法2:转换为yyyy-mm-dd格式的字符串

如果只是需要得到字符串形式的yyyy-mm-dd,不需要DATE类型,可以结合date_parse()和date_format()来实现:

SELECT date_format(date_parse('Nov-06-2015', '%b-%d-%Y'), '%Y-%m-%d') AS converted_date_str;

这条语句先把字符串解析成日期,再格式化为你需要的字符串格式,返回结果是2015-11-06,类型为VARCHAR。

额外注意事项

  • 如果你的数据集里存在格式错误的字符串(比如Nov-32-2015)或者NULL值,date_parse()会返回NULL。你可以用coalesce()函数设置默认值,避免影响后续查询:
    SELECT 
      coalesce(date_parse(date_column, '%b-%d-%Y'), DATE '1900-01-01') AS converted_date
    FROM your_target_table;
    
  • 确保你的月份缩写是标准的英文缩写(比如Feb而非Febr),否则解析会失败。

内容的提问来源于stack exchange,提问作者Data_101

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 07:37:42