`
Rod_johnson
  • 浏览: 73460 次
  • 性别: Icon_minigender_1
  • 来自: 上海
文章分类
社区版块
存档分类
最新评论

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)- 消逝的时间(以分钟为单位)K7zR{{-:W[本资料来源于贵州学习 网 http://www.gzu521.com]K7zR{{-:W
显示时间差的默认模式是什么?为了找到这个问题的答案,让我们进行一个简单的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表格中。在这个例子里,我们有一个离线(logoff)系统级触发机制来计算已经开始的会话时间并把它放入一个oracle statspack user_log扩展表格之中。
update
   perfstat.stats$user_log
set
   elapsed_minutes =
   round(to_number(logoff_time-logon_time)*1440)
where
   user = user_id
and
   elapsed_minutes is null;

分享到:
评论

相关推荐

    Oracle计算时间差常用函数

    Oracle数据库系统在处理日期和时间数据时提供了丰富的函数,这些函数对于计算时间差至关重要。在Oracle中,Date类型的字段可以用来存储日期和时间信息。本文将详细介绍如何使用Oracle的内置函数来计算两个Date类型...

    使用oracle计算系统当前时间的毫秒数

    2. **转换为自1970年1月1日以来的天数**:接着将`SYSDATE`减去1970年1月1日(使用`TO_DATE`函数)得到的结果表示的是自1970年1月1日至当前日期的时间差(单位是天)。 3. **转换为毫秒数**:由于一天有86400秒,而...

    Oracle里面 SQL语句 怎么得到两个时间的时间差

    在Oracle数据库中,计算两个日期之间的时间差是一个常见的需求,特别是在处理与时间相关的业务逻辑时。根据提供的信息,本文将详细介绍如何使用SQL语句来获取两个时间(`START_DATE`和`END_DATE`)之间的差值,并...

    oracle时间差表达式

    在Oracle数据库中,计算两个日期之间的时间差是一个常见的需求,尤其是在处理业务逻辑或数据报告时。本篇文章将详细介绍如何利用Oracle内置函数来精确计算两个日期之间的差值,并且能够得到天数、小时数、分钟数、秒...

    在Oracle9i中Oracle DATA计算时间差

    本文介绍了在Oracle9i中Oracle DATA计算时间差的方法。

    Oracle计算时间差为毫秒的实现代码

    在Oracle数据库中,计算时间差通常涉及到日期和时间的运算,特别是当需要精确到毫秒级别时,操作就显得相对复杂。Oracle提供了多种函数来处理日期和时间数据,如TO_DATE和TO_TIMESTAMP,但它们的功能有限,无法直接...

    Oracle 计算非工作时间.sql

    Oracle 计算非工作时间(去除周末,自定义节假日,等待时间)

    oracle返回相差的天数

    对于计算两个日期之间的差值,比如求出两个日期之间相差的天数,Oracle提供了强大的内置函数支持。本文将围绕如何使用Oracle来实现返回两个日期相差的天数这一功能展开讨论。 ### 一、问题背景 在业务场景中,经常...

    oracle时间和秒之间相互转换

    1. **计算时间差**:首先,我们需要计算当前时间与1970-01-01之间的差值。 2. **转换为毫秒**:接着,我们将这个差值转换为毫秒。 具体实现如下: ```sql SELECT TO_CHAR(SYSDATE, 'YYYY-MM-DD HH24:MI:SS') AS ...

    Oracle时间区间段合并.pdf

    在内部查询中,根据`ID`和累积的`F`值进行分组,计算每个分组的最大结束时间和最小开始时间之差,再乘以24,得到每个分组的总小时数。 4. 最外层的`GROUP BY`: 最后,对`ID`进行再次分组,将所有属于同一`ID`的...

    使用Oracle中的时间间隔型数据

    在Oracle数据库中,时间间隔型数据(INTERVAL)的...总的来说,Oracle的时间间隔型数据提供了对时间跨度的精确管理和计算,极大地简化了涉及时间差的操作,使得在数据库中处理时间相关的业务逻辑变得更加方便和准确。

    oracle中TIMESTAMP与DATE比较

    此外,当需要计算两个`DATE`类型值之间的时间差时,Oracle默认返回的结果是以天为单位的浮点数。这意味着如果需要获取具体的小时、分钟和秒数,还需要额外的转换步骤。例如,可以通过乘以一天的秒数(86400秒)并...

    Oracle中实现datadiff函数

    然而,在Oracle中我们可以通过自定义函数的方式实现类似的功能,即计算两个日期之间的时间差。 #### 实现方法 为了在Oracle中模拟`DATEDIFF`功能,我们可以创建一个用户定义的函数。下面将详细介绍如何创建和使用...

    pg与oracle语法差异

    - **Oracle**: 使用 `SYSDATE` 获取当前系统日期时间,可以通过 `TO_CHAR` 函数将其格式化。 - **PostgreSQL**: 使用 `CURRENT_DATE` 或 `CURRENT_TIMESTAMP` 获取当前日期或日期时间,并通过 `TO_CHAR` 函数进行...

    oracle时间函数

    在Oracle数据库中,时间函数允许我们进行各种操作,如获取当前日期和时间、计算日期之间的差异、调整日期以及按特定周期对数据进行分组和分析。以下是一些常用的时间函数的详细介绍: 1. **Sysdate**:这个函数返回...

    oracle_日期_加减方法

    在Oracle数据库中,日期操作是常见的SQL查询任务,特别是在处理历史数据或进行时间相关的分析时。Oracle提供了丰富的函数来帮助用户对日期进行加减操作,这些功能强大且灵活的函数使得开发者能更精确地处理时间数据...

    Oracle函数大全.pdf

    - **时间转换和处理**: 包括求两个日期之间天数、月份差、处理时间格式冲突、计算日期列表中的最晚日期、计算时间差、查找月的第一天和最后一天等。 - **Next_day**: 查找指定日期后的第一个指定星期的日期。 - **...

Global site tag (gtag.js) - Google Analytics