【发布时间】:2021-09-29 12:13:15
【问题描述】:
有没有办法在 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')
【讨论】: