db2 - 统计上一月,前两周的数据

生产有提数的需求,需要统计上一月,前两周的数据

根据下面的函数,我很快给出了统计sql,但在闲暇至于回想起来,似乎有点问题,就有了本篇文章来记录此事。

VALUES WEEK(CURRENT date);//9
VALUES YEAR(CURRENT date);//2022
VALUES MONTH(CURRENT date);//2

查询条件如下:

--获取上一个月的数据
month(TMV.biz_date) = month(current date) -1 
and year(TMV.biz_date) = year(current date) 
--前两周
week(biz_date)  in (week(current date) -1  ,week(current date) -2 )

回顾:

如果恰好是一月份呢,比较年份似乎有些不对,于是把年份*12+月份 跟当前时间的年份*12+月份-1相等,即得出上月时间范围。

SELECT  * FROM table t WHERE  
year(TMV.biz_date)*12 + month(TMV.biz_date) = year(current date) + month(current date) -1 

上两周的话,不同年份有相同的周看,要解决这个问题,得引出另一个函数: 

DAYOFWEEK函数 /DAYOFWEEK_ISO函数 

DAYOFWEEK函数返回一个日期、时间戳、日期字符串、时间戳字符串在周内的天值(从周日开始 1 到 7 )。

DAYOFWEEK_ISO函数返回一个日期、时间戳、日期字符串、时间戳字符串在周内的天值(从周一开始 1 到 7 )。 

DAYOFWEEK从周日开始算,DAYOFWEEK_ISO从周一开始算。用哪个都行

--当前是2022-02-24

--上周日  2022-02-20
values current date  -  dayofweek_iso(current date) 

values dayofweek_iso(current date)

--上两周的周一   2022-02-07
values current date  -  dayofweek_iso(current date)  - 13


SELECT  * FROM table t WHERE  
--前两周  
      t.biz_date >=  current date  -  dayofweek_iso(current date)  - 13 
 and  t.biz_date <=  current date  -  dayofweek_iso(current date) 

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值