【问题标题】:Hive: Subtracting months from a timeframeHive:从时间框架中减去几个月
【发布时间】:2018-02-05 00:19:04
【问题描述】:

我的时间范围是 2017-2-1(格式为 yyyy-m-d)。我需要在 where 语句中回顾 12 个月。所以,答案应该是:2016-2-1; 我试过了

where previous_date= add_months('2017-2-1', -12)

但是,我的输出似乎是空的。但是,我确实有

的数据
previous_date= '2016-2-1'

有没有办法不使用 add_months 来减去一定数量的月份?或者,我在使用 add_months 语句时是否遗漏了什么? 我不想减去 365 天。因为,这可能会给我一个闰年错误的输出。

【问题讨论】:

  • 我怀疑您将日期存储为字符串。如果是这样,请使用 YYYY-MM-DD 格式。
  • 改用add_months('2017-02-01', -12)。可以识别的字符串格式是yyyy-MM-dd
  • 它应该可以工作。向我们展示一些示例数据及其数据类型。

标签: sql hive hiveql


【解决方案1】:

这是因为在应用添加月份之后,您会得到一个字符串 yyyy-MM-dd。从 Hive 1.2 开始,你可以像这样使用 date_format UDF

select date_format(add_months('2017-2-1', -12), 'yyyy-M-d');

所以你的 where 子句应该是这样的

where previous_date= date_format(add_months('2017-2-1', -12), 'yyyy-M-d')

【讨论】:

    猜你喜欢
    • 2018-12-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-05-16
    • 2016-11-08
    • 2020-03-26
    • 2016-05-23
    相关资源
    最近更新 更多