oracle mod 余数与商相等

oracle mod 余数与商相等,第1张

问题结论没这么简单,把75改12同样执行结果会是12。

本质原因在于无限小数,当两个日期在做减法时,已经触发了无限循环小数

倘若此时不使用 to_number,那我们可以将两个日期的差理解为是一个分数形式。

而使用了to_number就不同了,number类型本身是有容量的,无限循环小数转为number类型,会被强制截断小数位,摇身一变成了有限小数。

MOD是用来取余的,没有to_number运算中就没有舍小数位的概念,20100跟75取余为0。

使用了to_number后,就不再是20100跟75取余了,而变成了一个无限接近且小于20100的数据再跟75取余,这样的计算结果就不可控了。

不可控的原因在于计算机本质采用的是二进制数据处理方式,在计算浮点数的时候有先天缺陷。

1、安装oracle后,运行程序,输入用户名等信息登录。

2、下面演示sysdate的用法,这个是oracle独有的,取当前时间

3、下面介绍to_char()函数的用法,将时间转化为特定的格式。

4、下面介绍一种将时间转化为汉字形式的时间格式及显示出星期。

5、下面演示to_date函数的使用方法,将字符串转换为标准的时间格式。

select

Trunc(sysdate+1),

to_date(to_char(add_months(sysdate,1),'yyyymm'),'yyyymm')

from dual

select from (select JHBH1,JHBH2 from xx order by JHBH1,JHBH2) where rownum=1;

这种写法表大了的话效率可能不好,除非两列都有联合索引

获取Oracle的当前负载情况:

查询sql语句如下:

SELECT 

FROM ( SELECT AINSTANCE_NUMBER,

ASNAP_ID,

BBEGIN_INTERVAL_TIME + 0 BEGIN_TIME,

BEND_INTERVAL_TIME + 0 END_TIME,

ROUND(VALUE - LAG( VALUE, 1 , '0')

OVER(ORDER BY AINSTANCE_NUMBER, ASNAP_ID)) "DB TIME"

FROM (SELECT BSNAP_ID,

INSTANCE_NUMBER,

SUM(VALUE ) / 1000000 / 60 VALUE

FROM DBA_HIST_SYS_TIME_MODEL B

WHERE BDBID = (SELECT DBID FROM V$DATABASE)

AND UPPER (BSTAT_NAME) IN UPPER(('DB TIME' ))

GROUP BY BSNAP_ID, INSTANCE_NUMBER) A,

DBA_HIST_SNAPSHOT B

WHERE ASNAP_ID = BSNAP_ID

AND BDBID = (SELECT DBID FROM V$DATABASE)

AND BINSTANCE_NUMBER = AINSTANCE_NUMBER)

WHERE TO_CHAR(BEGIN_TIME, 'YYYY-MM-DD') = TO_CHAR(SYSDATE , 'YYYY-MM-DD')

ORDER BY BEGIN_TIME;

SQL 结果:

以上就是关于oracle mod 余数与商相等全部的内容,包括:oracle mod 余数与商相等、oracle 如何查看所有函数、oracle中如何获取当月今天以后的时间等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

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

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

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

发表评论

登录后才能评论

评论列表(0条)

    保存