Hive:从时间范围减去月份

时间:2018-02-05 00:19:04

标签: sql hive hiveql

我有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天。因为,这可能会给我一个闰年错误的输出。

1 个答案:

答案 0 :(得分:1)

这是因为在应用add months之后,你会得到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')