1,如果拿到的日期格式不是标准格式(yyyy-MM-dd HH:mm:ss),先转成时间戳。

select unix_timestamp('202105', 'yyyyMM') from ****;
 
--返回结果:1619798400

2,再将时间戳转成标准时间格式。

select from_unixtime(unix_timestamp('202105', 'yyyyMM'), 'yyyy-MM-dd HH:mm:ss') from ***;
--返回结果:2021-05-01 00:00:00

3,调用add_months函数,负数代表往历史方向减月份, 正数代表往未来方向加月份

select add_months(from_unixtime(unix_timestamp('202105', 'yyyyMM'), 'yyyy-MM-dd HH:mm:ss'), -1) from ***;


 
--返回结果:2021-04-01

4,再将日期转成时间戳格式

select unix_timestamp(add_months(from_unixtime(unix_timestamp('202105', 'yyyyMM'), 'yyyy-MM-dd HH:mm:ss'), -1), 'yyyy-MM-dd') from ***;
--返回结果:1617206400

5,设置日期模板,转换成最终想要的日期格式

select from_unixtime(unix_timestamp(add_months(from_unixtime(unix_timestamp('202105', 'yyyyMM'), 'yyyy-MM-dd HH:mm:ss'), -1), 'yyyy-MM-dd'), 'yyyyMM') from ***;
 
--返回结果:202104

6.当前 时间上个月

select add_months(CURRENT_DATE,-2) from **;
--返回结果:2021-03-10