【问题标题】:Date_format function in hiveHive 中的 Date_format 函数
【发布时间】:2022-01-20 10:45:05
【问题描述】:

我在 hive 中运行了一个基本的 select 语句,期望 20211227 但 hive 返回 20221227

select date_format('2021-12-27','YYYYMMdd')

我运行了下面的语句,它给了我预期的结果20211225。不确定,为什么 hive 会这样。

select date_format('2021-12-25','YYYYMMdd')

【问题讨论】:

  • 试试这个 select date_format('2021-12-27','dd-MM-YYYY');如果不起作用,那么可能检查时区设置。
  • 正确的格式应该是yyyyMMdd。 Hive 遵循 java 日期格式。现在为什么第一个 sql 不起作用,可能是自动字符串到日期转换的一些问题。

标签: sql hive date-format


【解决方案1】:

hive 使用 Java 简单日期格式。根据 Java 指南,

  • y(小写)是年份
  • Y(大写)是“基于周的年份”

这种差异将导致您的代码工作得非常好,除了在几年的最后处理日期时。 因此,当您使用 ('2021-12-27','YYYYMMdd') 时,yyyy 将输出 2021,但 YYYY 将输出 2022。因为 12 月 27 日这一周正好是 2022 年的第一周。
@987654323 @ 正在工作,因为 12 月 25 日不是 2022 年的第一周。
参考下面的截图,你可以看到小写的 y 给出了正确的结果,大写的从一年的第一周开始,即 2022 年。

请始终按照 hive 文档所述使用 yyyy

【讨论】:

  • 谢谢,成功了
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-02-23
  • 2019-11-14
  • 1970-01-01
  • 2012-08-16
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多