请教高手一下,我要查询200903--200901之间间隔了几个月,然后把每个月的数据累加,怎么写?
另外,如果跨年了,怎么弄,比如200902--200812
oracle计算月份间隔问题
答案:2 悬赏:80 手机版
解决时间 2021-02-27 11:09
- 提问者网友:最爱你的唇
- 2021-02-27 01:54
最佳答案
- 五星知识达人网友:duile
- 2021-02-27 02:40
使用months_between函数实现,具体参照如下:
SQL> select months_between(to_date(200902,'yyyymm'),to_date(200812,'yyyymm')) as ans from dual;
ANS
----------
2
至于把每个月的数据累加,没有明白你的意思。
*******关于数据累加补充:********
select sum(你要求的字段) from table_name where months between 200903 and 200901;
能达到你要求么?
SQL> desc test_z
Name Null? Type
----------------------------------------- -------- ----------------------------
SN VARCHAr2(10)
DATETIME VARCHAr2(20)
SQL> truncate table test_z;
Table truncated.
SQL> insert into test_z values('1','20090101');
1 row created.
SQL> insert into test_z values('2','20090201');
1 row created.
SQL> select sum(SN) from test_z where DATETIME between 20090101 and 20090201;
SUM(SN)
----------
3
********************************
---
以上,希望对你有所帮助。
SQL> select months_between(to_date(200902,'yyyymm'),to_date(200812,'yyyymm')) as ans from dual;
ANS
----------
2
至于把每个月的数据累加,没有明白你的意思。
*******关于数据累加补充:********
select sum(你要求的字段) from table_name where months between 200903 and 200901;
能达到你要求么?
SQL> desc test_z
Name Null? Type
----------------------------------------- -------- ----------------------------
SN VARCHAr2(10)
DATETIME VARCHAr2(20)
SQL> truncate table test_z;
Table truncated.
SQL> insert into test_z values('1','20090101');
1 row created.
SQL> insert into test_z values('2','20090201');
1 row created.
SQL> select sum(SN) from test_z where DATETIME between 20090101 and 20090201;
SUM(SN)
----------
3
********************************
---
以上,希望对你有所帮助。
全部回答
- 1楼网友:掌灯师
- 2021-02-27 03:56
因为oracle的时间间隔是按天来算的,因为一天有1440分钟,
第一个查询是90分钟,90/1440=0.0625,0.625*24*60=90,这个没问题,
第二个查询是30分钟,30/1440=0.020833333333333333333333333333333,
0.020833333333333333333333333333333*24*60=29.99999999999999999999999999952,
因为数据长度的问题,最后就是29.9999999999999999999999999995
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯