SQL 月同环比 日期 T+1 自动计算
对于离线数据的分析, 数据通常是 T+1 的, 即所有数据更新都是到 "昨天". 对于这样的同环比能自动计算是很需要的.
-- 以Mysql为例:
-- 今天: 2022/3/1
select curdate();
-- 昨天: 2022/2/28
select date_add(curdate(), interval -1 day)
-- 昨天的当月第一天: '2022/3/1'
select date_add(date_add('2022/3/1', interval -1 day), interval -day(date_add('2022/3/1', interval -1 day)) +1 day)
-- 1. 月同比去年时间计算
-- 昨天的去年的当月第一天
select date_add(date_add(date_add('2022/3/1', interval -1 day), interval -day(date_add('2022/3/1', interval -1 day)) +1 day), interval -1 year)
-- 昨天的去年
select date_add(date_add('2022/3/1', interval -1 day), interval -1 year)
-- 2. 环比上月计算
-- 昨天的去年的当月第一天
select date_add(date_add(date_add('2022/3/1', interval -1 day), interval -day(date_add('2022/3/1', interval -1 day)) +1 day), interval -1 month)
-- 昨天的上月
select date_add(date_add('2022/3/1', interval -1 day), interval -1 month)
耐心和恒心, 总会获得回报的.