有人知道下面的查询会返回什么吗?
"date_add"('month', -1, "date_trunc"('month', "date_add"('day', -1, current_date)))
假设目前的日期是2022年2月5日,那么我的猜测是:
"date_add"('day',-1,current_date)将返回2022年2月4日“date_trunc”(‘date_trunc’,‘date_add’(‘day’,-1,current_date))
最后,“date_add”(“月份”,-1,“date_trunc”(月),"date_add"('day',-1,current_date))将返回1 2022年1月
发布于 2022-02-09 09:35:27
如果初始日期不是月份的第一天,则此转换返回前一个月的第一天。第一天它会返回两个月前的第一天
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
https://stackoverflow.com/questions/70997608
复制相似问题