Улей: вычитание 1 года из текущей даты

Я пытаюсь найти лучший способ вычесть 1 год, а также один месяц с текущей даты в запросе Hive. Используя следующее, я не верю, что он будет учитывать високосные годы или тот факт, что в месяцах разное количество дней, поэтому в конечном итоге код сломается. Любая помощь будет принята с благодарностью!

set my_date = from_unixtime(unix_timestamp()-365*60*60*24, 'yyyy-MM-dd');
set my_date = from_unixtime(unix_timestamp()-30*60*60*24, 'yyyy-MM-dd');

Благодарить!

-Ребекка


person Rebecca    schedule 17.03.2015    source источник


Ответы (1)


Если у вас есть формат даты, такой как гггг-мм-дд чч:мм:сс в Hive, его легко реализовать, используя следующие функции

concat((год(поле_даты)-1),'-', (месяц(поле_даты)-1), '-', день(поле_даты))

Используйте функции ЕСЛИ и СЛУЧАЯ для реализации вашей логики, чтобы определить, является ли это високосным годом или нет (путем деления года на 4)

person Bharat Gamini    schedule 18.03.2015