首页 > 数据库 >Hive字符串日期格式化方法

Hive字符串日期格式化方法

来源:互联网 2026-07-26 08:46:08

Hive日期格式化可通过from_unixtime与unix_timestamp配合,或直接使用date_format函数。前者需指定输入格式,后者更简洁但要求参数为可识别日期字符串。格式符号遵循JavaSimpleDateFormat,大小写敏感,需注意MM与mm等区别,例如月份与分钟不同,常见错误源于此,需谨慎。

Hive 中处理日期格式化主要依赖几个内置函数,掌握后非常方便。很多初学者容易被各种时间戳和字符串格式搞晕,本文将系统梳理清楚这些方法。

Hive字符串日期格式化方法

长期稳定更新的攒劲资源: >>>点此立即查看<<<

最常见的第一种方法是使用 from_unixtimeunix_timestamp 函数组合。简单来说,先将字符串转换为 Unix 时间戳(整数),再按所需格式转回字符串。

SELECT from_unixtime(unix_timestamp('2021-08-01 12:34:56', 'yyyy-MM-dd HH:mm:ss'), 'yyyy-MM-dd') as formatted_date;

上述示例将完整时间戳精简为仅日期部分。逻辑清晰:unix_timestamp 解析输入格式,from_unixtime 输出目标格式。

第二种方法更直接——使用 date_format 函数。无需中间转换,一步到位:

SELECT date_format('2021-08-01 12:34:56', 'yyyy-MM-dd') as formatted_date;

这相当于告诉 Hive 从原始字符串中提取 yyyy-MM-dd 格式的结果。虽然 date_format 调用更简洁,但要求第一个参数为 Hive 可识别的日期时间字符串,而 unix_timestamp 可以指定输入格式。实际选择取决于源数据格式是否规整。

再说说格式模式里那些符号——这是最容易踩坑的地方。Hive 沿用了 Java SimpleDateFormat 的约定,常见的包括:

  • yyyy:四位年份
  • yy:两位年份
  • MM:月份(01–12)
  • dd:日期(01–31)
  • HH:小时(00–23)
  • mm:分钟(00–59)
  • ss:秒(00–59)
  • a:AM/PM 标识
  • E:星期几名称(如 Sunday)
  • u:星期几的 ISO-8601 数字(1-7,周一为1)
  • G:ISO-8601 格式的星期几名称
  • z:时区缩写(如 PST)

打个比方,你想输出“2021-08-01 星期天”这种格式,可以这样写:

SELECT date_format('2021-08-01', 'yyyy-MM-dd E');

输出结果就是 2021-08-01 Sunday。类似的,加上 a 能区分上午下午,加上 z 能显示时区。这些符号组合起来,几乎能满足所有报表、日志、可视化对日期格式的要求。

需要注意,date_format 的第二个参数大小写敏感,写错会返回 NULL。例如 MM 表示月份,mm 表示分钟,不要混淆。另外,如果源数据是时间戳(bigint 类型),需要先进行类型转换,或直接使用 from_unixtime 处理。

更多关于 Hive 日期和时间函数的细节,可参考官方文档:Hive Date and Time Functions。实际开发中,建议创建一个小测试表,将各种边界情况(如闰年、月末、带时区)都测试一遍,即可放心使用。

侠游戏发布此文仅为了传递信息,不代表侠游戏网站认同其观点或证实其描述

热游推荐

更多
湘ICP备14008430号-1 湘公网安备 43070302000280号
All Rights Reserved
本站为非盈利网站,不接受任何广告。本站所有软件,都由网友
上传,如有侵犯你的版权,请发邮件给xiayx666@163.com
抵制不良色情、反动、暴力游戏。注意自我保护,谨防受骗上当。
适度游戏益脑,沉迷游戏伤身。合理安排时间,享受健康生活。