先说思想
hive只有date_sub()函数实现日期减去几天,但是如果还要求保留时分秒的话,这个函数不能满足需求。
只能通过对date_sub()的结果再次处理方可得到含有时分秒的值,也就是在date_sub()函数后面拼接上当前日期的时分秒即可。
select FROM_UNIXTIME(UNIX_TIMESTAMP(concat_ws('',date_sub(current_timestamp,1),substr(current_timestamp,11)),'yyyy-MM-dd HH:mm:ss'))