我正在试图找到一种最佳方法,从配置单元查询中的当前日期减去1年和1个月。使用下面的方法,我不相信它会考虑闰年,或者如果事实上月份有不同的天数,那么最终代码会被破坏。任何帮助都将不胜感激!
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');
谢谢!
-丽贝卡
我正在试图找到一种最佳方法,从配置单元查询中的当前日期减去1年和1个月。使用下面的方法,我不相信它会考虑闰年,或者如果事实上月份有不同的天数,那么最终代码会被破坏。任何帮助都将不胜感激!
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');
谢谢!
-丽贝卡
1条答案
按热度按时间yv5phkfx1#
如果在hive中有yyyy-mm-dd hh:mm:ss这样的日期格式,那么使用以下函数很容易实现
concat((年(日期字段)-1)、'-'、(月(日期字段)-1)、'-'、日(日期字段))
使用if和case函数来实现逻辑,以确定是否是闰年(用年份除以4)