Datetime 从配置单元中的日期字段中减去n个月

Datetime 从配置单元中的日期字段中减去n个月,datetime,hive,Datetime,Hive,我试图将一个表限制为一个特定的月数,例如在WHERE子句中为24个月。我使用了以下方法,但没有成功: 其中月份(EVENT_START_DT_TM)>添加月份(from_unixtime(unix_timestamp()),-1) EVENT_START_DT_TM是一个真正的datetime字段,我希望从当前日期开始有一个24个月的回溯期来匹配该字段。查看HIVE手册,许多日期函数都需要日期字符串,但真正的日期字段是什么?使用当前日期()和添加月份()函数获取24个月之前的日期,然后使用日期格

我试图将一个表限制为一个特定的月数,例如在WHERE子句中为24个月。我使用了以下方法,但没有成功:

其中月份(EVENT_START_DT_TM)>添加月份(from_unixtime(unix_timestamp()),-1)

EVENT_START_DT_TM是一个真正的datetime字段,我希望从当前日期开始有一个24个月的回溯期来匹配该字段。查看HIVE手册,许多日期函数都需要日期字符串,但真正的日期字段是什么?

使用当前日期()添加月份()函数获取24个月之前的日期,然后使用日期格式()函数根据需要更改格式(匹配到事件\u开始\u DT\u TM 字段格式)

“真实日期”字段是指当日期字段中的数据与yyy-MM-dd格式匹配时,您可以从该字段中提取月份

hive> select month("2018-10-12");
+------+--+
| _c0  |
+------+--+
| 10   |
+------+--+
如果字段值不正确,则日期字段不采用yyyy-MM-dd格式

 hive> select month("20181012");
+-------+--+
|  _c0  |
+-------+--+
| NULL  |
+-------+--+
我们不能使用months函数直接提取月份,而是需要更改字段的格式,然后使用from_unixtime/unix_timestamp..etc函数(或使用子字符串函数)提取月份

 hive> select month("20181012");
+-------+--+
|  _c0  |
+-------+--+
| NULL  |
+-------+--+