当前位置:首页 > 开发 > IT生活 > 正文

Oracle中计算时间差

发表于: 2009-09-10   作者:chicony   来源:转载   浏览次数:
摘要: 在Oracle中计算时间差 计算时间差是Oracle DATA数据类型的一个常见问题。Oracle支持日期计算,你可以创建诸如“日期1-日期2”这样的表达式来计算这两个日期之间的时间差。 一旦你发现了时间差异,你可以使用简单的技巧来以天、小时、分钟或者秒为单位来计算时间差。为了得到数据差,你必须选择合适的时间度量单位,这样就可以进行数据格式隐藏。 使用完善复杂的转换函数来
在Oracle中计算时间差

计算时间差是Oracle DATA数据类型的一个常见问题。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> select sysdate-(sysdate-3) from dual;

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中计算时间差

  • 0

    开心

    开心

  • 0

    板砖

    板砖

  • 0

    感动

    感动

  • 0

    有用

    有用

  • 0

    疑问

    疑问

  • 0

    难过

    难过

  • 0

    无聊

    无聊

  • 0

    震惊

    震惊

编辑推荐
protected string GetDiffTime(DateTime beginTime, DateTime endTime) { string strResout = "{0}{
protected string GetDiffTime(DateTime beginTime, DateTime endTime) { string strResout = "{0}{
计算毫秒级的时间差算是一个常见的需求吧... 手头上是windows编程的项目,所以首先就想到的是GetTic
TimeSpan 结构 表示一个时间间隔。 命名空间:System 程序集:mscorlib(在 mscorlib.dll 中) 说明:
问题描述 设 A[1...n] 是一个数组,如果对于 i < j 有 A[i] > A[j], 则 A[i] 和 A[j] 构成一
  云计算是目前计算机业界热门的方向,Cgroups作为一种有效的资源管理方案在云计算中得到越来越大
在数据库应用开发中,我们经常需要面对复杂的SQL式计算,比如多层分组中的关联计算。由于SQL分组时
在数据库应用开发中,我们经常需要面对复杂的SQL式计算,比如多层分组中的关联计算。由于SQL分组时
1.AX=b A\b或者inv(A)*b 一、 特殊矩阵的实现 常见的特殊矩阵有零矩阵、幺矩阵、单位矩阵、三角形矩
问题描述 设 A[1...n] 是一个数组,如果对于 i < j 有 A[i] > A[j], 则 A[i] 和 A[j] 构成一
版权所有 IT知识库 CopyRight © 2009-2015 IT知识库 IT610.com , All Rights Reserved. 京ICP备09083238号