如何在 Hive 中使用月份计算特定日期

How to calculate certain date using month in Hive

有没有办法在 Hive 中使用当前日期设置过去的特定日期? 我需要在当月的任何时刻始终获取上个月的第一天,然后将其用于过滤

使用add_month获取上月日期,使用TRUNC获取第一天:

select trunc(add_months(current_date,-1),'MM') --returns 2021-06-01 for current_date = 2021-07-22

如果你没有TRUNC功能,那么使用add_month获取上月日期,使用substr获取'yyyy-MM',与'-01'连接获取月份的第一天:

select concat(substr(add_months(current_date,-1),1,7),'-01') --returns 2021-06-01 for current_date = 2021-07-22

你也可以减去 2 个月,得到 last_day() 再加上一天得到上个月的第一天:

select date_add(last_day(add_months(current_date, -2)),1) --returns 2021-06-01 for current_date = 2021-07-22

还有一个更简单的方法:

select date_format(add_months(current_date, -1),'yyyy-MM-01')