MYSQL网页编程之在Oracle上钩算工夫差的办法
在我们工作的过程中,经常能听到很多不使用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制定的商业许可协议。 是否碎片会引发效率问题?这都是需要进一步探讨的东西。varbinary(max)代替image也让SQLServer的字段类型更加简洁统一。 需要注意的一点,也是我使用过程中发现的一个问题。在建立function->schema->table后,如果在现有的分区表上建立没有显式声明的聚集索引时,分区表会自动变为非分区表。这一点很让我纳闷。 Mirror可以算是SQLServer的Dataguard了。但是能不能被大伙用起来就不知道了。 另一个是把SQL语句写到服务器端,就是所谓的SP(存储过程); 光写几个SQL实在叫无知。 呵呵,这就是偶想说的 XML字段类型更好的解决了XML数据的操作。XQuery确实不错,但是个人对其没好感。(CSDN的开发者应该是相当的熟了!) 备份方面可能还是一个老大难的问题。不能单独备份几个表总是感觉不爽。灵活备份的问题不知道什么时候才能解决。
页:
[1]