首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在presto中使用date_add ()和date_trunc()

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

Stack Overflow用户
提问于 2022-02-05 11:31:35
回答 1查看 964关注 0票数 0

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

代码语言:javascript
运行
复制
"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月

EN

Stack Overflow用户

发布于 2022-02-09 09:35:27

如果初始日期不是月份的第一天,则此转换返回前一个月的第一天。第一天它会返回两个月前的第一天

代码语言:javascript
运行
复制
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

结果:

代码语言:javascript
运行
复制
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

每月第一天测试:

代码语言:javascript
运行
复制
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

结果:

代码语言:javascript
运行
复制
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
票数 0
EN
查看全部 1 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70997608

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档