Oracle 获得两个日期之间间隔的月份数和天数

Oracle 获得两个日期之间间隔的月份数和天数,第1张

select sysdate - to_date('20141020', 'yyyymmdd') from dual;

oracle里日期型之间是可以直接运算的,这样的结果就是现在的时间和2014-10-20日之间间隔的天数,注意这个值是有小数位的,即两个日期值之间的精确计算的差值,如果需要结果为整数的天数,对结果turnc、round即可。

Oracle中两个to_date相减能得到天数,解决方法如下:

1、首先打开Oracle管理工具,执行如下图所示的语句来查询一下系统时间,会看到显示的并不是平常用到的。

2、接下来就可以通过to_char函数来对日期函数进行转换一下,如下图所示,第一个参数是时间,第二个是格式化类型。

3、另外也可以通过To_Char函数来对日期进行拆分,分别取出年月日,如下图所示。

4、接下来还可以通过To_Date函数来对字符串进行日期转换,如下图所示。

5、最后,还可以通过To_number函数来将字符数字转换为数字来进行运算,如下图所示。

建一个日期表

v_date

2014-09-19

2014-09-20

2014-09-21

2014-09-22

2014-09-23

2014-09-24

2014-09-25

2014-09-26

2014-09-27

2014-09-28

2014-09-29

2014-09-30 

select aid,count(distinct v_date)

from test a, test_date b

where v_Date between start_date and end_date

group by aid

id (No column name)

111 6

112 2

相差的天数用months_between()函数

exp:SQL>select months_between(sysdate,to_date('2015-08-08','yyyy-mm-dd')) from dual;

没有求相差的月数函数,还有后面那句"天数取的是月数抛开后的零头"我没看懂

以2015年12月1日至2015年12月31日为例。其中周六和周日算周末。

查询除周末以外的天数(oracle中以周日为1,周一为2……周六为7),可用如下语句:

with t as

(select rownum-1 rn from dual connect by rownum<=100)

select count() from t 

where to_char(to_date('2015-12-01','yyyy-mm-dd')+rn,'yyyy-mm-dd') between '2015-12-01' and '2015-12-31' 

and to_char(to_date('2015-12-01','yyyy-mm-dd')+rn,'d') not in (6,7);

查询结果:

查日历可得,2015年12月1日至2015年12月31日期间,周六周日的天数合计8天,31-8=23,与语句所得结果一致。

楼上的只统计了一个月的吧

WITH t AS

     (SELECT     ROWNUM

            FROM DUAL

      CONNECT BY ROWNUM <= 12)

SELECT    TO_CHAR (LAST_DAY (TO_DATE (   TO_CHAR (SYSDATE, 'YYYY')

                                      || LPAD (TO_CHAR (ROWNUM), 2, 0),

                                      'YYYYMM'

                                     )

                            ),

                   'YYYY-MM'

                  )

       || '月',

          TO_CHAR (LAST_DAY (TO_DATE (   TO_CHAR (SYSDATE, 'YYYY')

                                      || LPAD (TO_CHAR (ROWNUM), 2, 0),

                                      'YYYYMM'

                                     )

                            ),

                   'DD'

                  )

       || '天'

  FROM t

直接全选复制粘贴运行

以上就是关于Oracle 获得两个日期之间间隔的月份数和天数全部的内容,包括:Oracle 获得两个日期之间间隔的月份数和天数、Oracle中两个to_date相减能得到天数吗、Oracle中统计用户在线天数等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/9377604.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-27
下一篇2023-04-27

发表评论

登录后才能评论

评论列表(0条)

    保存