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

Hive中如何将"Mon Mar 14 00:04:26 +0000 2016"转为yyyy-mm-dd格式?

Hive中转换特定时间字符串为yyyy-mm-dd格式的实现方案

嘿,这个需求我在日常工作里经常碰到,给你分享两个实用的实现方法,适配不同版本的Hive:

方案一:兼容低版本Hive(适用于Hive 2.1.0以下)

利用unix_timestamp()将输入的时间字符串转换成时间戳,再通过from_unixtime()将时间戳格式化为目标日期格式。关键是要匹配正确的输入时间格式符:

SELECT from_unixtime(
    unix_timestamp('Mon Mar 14 00:04:26 +0000 2016', 'EEE MMM dd HH:mm:ss Z yyyy'),
    'yyyy-MM-dd'
) AS formatted_date;

注意事项:

  • 输入格式符EEE对应星期缩写(如Mon),MMM对应月份缩写(如Mar),Z对应时区偏移(如+0000),这些格式符的大小写不能错
  • 如果你的Hive环境默认locale不是英文,可能会出现月份/星期解析失败的情况,需要临时设置locale为英文:
    SET mapreduce.map.java.opts=-Duser.language=en;
    SET mapreduce.reduce.java.opts=-Duser.language=en;
    

方案二:高版本Hive推荐(Hive 2.1.0及以上)

Hive 2.1.0开始支持to_timestamp()函数,可以直接将字符串解析为时间戳类型,再用date_format()格式化,代码更简洁直观:

SELECT date_format(
    to_timestamp('Mon Mar 14 00:04:26 +0000 2016', 'EEE MMM dd HH:mm:ss Z yyyy'),
    'yyyy-MM-dd'
) AS formatted_date;

测试结果

以上两种方案运行后,都会输出结果:2016-03-14,完全符合你的格式要求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 03:36:36