在presto中使用date_add()和date_trunc()



有人知道下面的查询会返回什么吗?

"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

相关内容

  • 没有找到相关文章

最新更新