Вычтите n месяцев из поля даты в улье - PullRequest
0 голосов
/ 30 июня 2018

Я пытаюсь ограничить таблицу определенным количеством месяцев, например 24 в моем предложении WHERE. Я использовал следующее безуспешно:

Где месяц (EVENT_START_DT_TM)> add_months (from_unixtime (unix_timestamp ()), - 1)

EVENT_START_DT_TM - это поле истинной даты и времени, и я хочу, чтобы 24-месячный период просмотра с текущей даты соответствовал этому полю. Глядя на руководство по HIVE, для многих функций даты требуется дата STRINGS, но что такое поле DATE?

1 Ответ

0 голосов
/ 30 июня 2018

используйте Current_date () и add_months () , чтобы получить дату до 24 месяцев, затем используйте date_format () , чтобы изменить формат в соответствии с вашими потребностями (соответствует EVENT_START_DT_TM формат поля)

hive> select date_format(add_months(current_date(),-24),"yyyy-MM-dd HH:mm:ss.SSS");
+--------------------------+--+
|           _c0            |
+--------------------------+--+
| 2016-06-29 00:00:00.000  |
+--------------------------+--+

Истинное поле даты - это когда ваши данные в поле даты совпадают с форматом гггг-мм-дд , тогда вы можете извлечь месяцы из поля

hive> select month("2018-10-12");
+------+--+
| _c0  |
+------+--+
| 10   |
+------+--+

если значения полей не являются истинными полями даты, т.е. не в формате гггг-ММ-дд

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

мы не можем извлечь месяц напрямую, используя функцию month вместо этого, нам нужно изменить формат поля, а затем извлечь месяц, используя функции from_unixtime / unix_timestamp..etc (или), используя функции подстроки

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...