有人知道下面的查询会返回什么吗?
"date_add"('month', -1, "date_trunc"('month', "date_add"('day', -1, current_date)))
假设当前日期是2022年2月5日,那么我的猜测是:
"date_add";('天',-1,current_date(将返回2022年2月4日";date_trunc";("月","日期_add"("天",-1,current_date((将返回2022年2月1日
最后;date_add";('month',-1,"date_trunc'"('month',"date_add"('day',-1current_date(((将返回2022年1月1日
如果初始日期不是上个月的第一天,则此转换返回上个月第一天。对于第一天,它返回两个月前的第一天
select current_date as initial_date,
"date_add"('day', -1, current_date) as second_date, --initial minus 1 day
"date_trunc"('month', "date_add"('day', -1, current_date)) as third_date, --second_date truncated to -01
"date_add"('month', -1, "date_trunc"('month', "date_add"('day', -1, current_date))) as final_result --third date - 1 month
结果:
initial_date second_date third_date final_result
2022-02-09 2022-02-08 2022-02-01 2022-01-01 --1st of 1 mth back
每月第一天的测试:
select date '2022-02-01' as initial_date,
"date_add"('day', -1, date '2022-02-01') as second_date, --initial minus 1 day
"date_trunc"('month', "date_add"('day', -1, date '2022-02-01')) as third_date, --second_date truncated to -01
"date_add"('month', -1, "date_trunc"('month', "date_add"('day', -1, date '2022-02-01'))) as final_result --third date - 1 month
结果:
initial_date second_date third_date final_result
2022-02-01 2022-01-31 2022-01-01 2021-12-01 --this is 2 mth back