HIVE怎么获得上个月天数

问题遇到的现象和发生背景

HIVE获得上个月的总天数,比如上月是2月,得到28天

select substr(last_day(add_months(CURRENT_DATE,-1)),9,10);

select (datediff(last_day(add_months(FROM_UNIXTIME(UNIX_TIMESTAMP(),'yyyy-MM-dd HH:mm:ss'), -1)),trunc(add_months(FROM_UNIXTIME(UNIX_TIMESTAMP(),'yyyy-MM-dd HH:mm:ss'), -1),'MM')) + 1) days;

select datediff(date_format(last_day(add_months(current_date(),-1)),'yyyy-MM-dd'),trunc(add_months(current_date(),-1),'MM'));

select day(date_sub(concat(from_unixtime(unix_timestamp(), 'yyyy-MM'), '-01'), 1))

推荐使用ButterFly0612的答案,其他的不值一提。

select substr(last_day(add_months(CURRENT_DATE,-1)),9,10);

解决方法有很多,其中一个思路参考:
先把时间设置成当月1号0点0分0秒,然后再减1秒,截取日,即可。

select day(last_day(date_sub(now(),interval 1 month)));