|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
在我们工作的过程中,经常能听到很多不使用MySQL的理由,虽然其中有一些是对MySQL的误解,不过同样也有一些是合情合理的。怎样在Oracle上钩算工夫差呢?盘算工夫差是OracleDATA数据范例的一个罕见成绩。Oracle撑持日期盘算,你能够创立诸如“日期1-日期2”如许的表达式来盘算这两个日期之间的工夫差。
一旦你发明了工夫差别,你可使用复杂的技能来以天、小时、分钟大概秒为单元来盘算工夫差。为了失掉数据差,你必需选择符合的工夫器度单元,如许就能够举行数据格局埋没。
利用完美庞大的转换函数来转换日期是一个勾引,可是你会发明这不是最好的办理办法。
round(to_number(end-date-start_date))-消失的工夫(以天为单元)
round(to_number(end-date-start_date)*24)-消失的工夫(以小时为单元)
round(to_number(end-date-start_date)*1440)-消失的工夫(以分钟为单元)
显现工夫差的默许形式是甚么?为了找到这个成绩的谜底,让我们举行一个复杂的SQL*Plus查询。
SQL>selectsysdate-(sysdate-3)fromdual;
SYSDATE-(SYSDATE-3)
-------------------
3
这里,我们看到了Oracle利用天来作为消失工夫的单元,以是我们能够很简单的利用转换函数来把它转换成小时大概分钟。但是,当分钟数不是一个整数时,我们就会碰到安排小数点的成绩。
Select
(sysdate-(sysdate-3.111))*1440
from
dual;
(SYSDATE-(SYSDATE-3.111))*1440
------------------------------
4479.83333
固然,我们能够用ROUND函数(即取整函数)来办理这个成绩,可是要记着我们必需起首把DATE数据范例转换成NUMBER数据范例。
Select
round(to_number(sysdate-(sysdate-3.111))*1440)
from
dual;
ROUND(TO_NUMBER(SYSDATE-(SYSDATE-3.111))*1440)
----------------------------------------------
4480
我们能够用这些函数把一个消失工夫近似转换成份钟并把这个值写进Oracle表格中。在这个例子里,我们有一个离线(logoff)体系级触发机制来盘算已入手下手的会话工夫并把它放进一个OracleSTATSPACKUSER_LOG扩大表格当中。
Update
perfstat.stats$user_log
set
elapsed_minutes=
round(to_number(logoff_time-logon_time)*1440)
where
user=user_id
and
elapsed_minutesisNULL;
MySQL采用双重授权(DualLicensed),它们是GPL和MySQLAB制定的商业许可协议。 |
|