1.获取本周的第一天
-- 周一
select toMonday(toDate('2023-01-18'))
-- 如果周日为本周的第一天
select date_sub(DAY,1,toMonday(toDate('2023-01-18')))
2.获取本周的最后一天
-- 周日
select date_add(DAY, 7-toDayOfWeek(toDate('2023-01-18')), toDate('2023-01-18'))
-- 如果周六为本周的最后一天
select date_add(DAY, 6-toDayOfWeek(toDate('2023-01-18')), toDate('2023-01-18'))
3.获取本月的第一天
select toStartOfMonth(toDate('2022-08-15'))
4.获取本月的最后一天
select date_sub(DAY, 1, toStartOfMonth(date_add(MONTH, 1, toDate('2022-08-15'))))
-- 先获取下个月的日期,然后获取下个月的第一天再减一天
5.获取上一年的本月的第一天
select date_sub(YEAR,1,toStartOfMonth(toDate('2022-08-31')))
6.获取上一年的本月的最后一天
select date_sub(YEAR,1,date_sub(DAY, 1, toStartOfMonth(date_add(MONTH, 1, toDate('2022-08-15')))))
7.获取上个月的第一天
select date_sub(MONTH ,1,toStartOfMonth(toDate('2022-08-31')))
8.获取上个月的最后一天
select date_sub(MONTH ,1,date_sub(YEAR,1,date_sub(DAY, 1, toStartOfMonth(date_add(MONTH, 1, toDate('2022-08-15'))))))