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