`
sxdtzhaoxinguo
  • 浏览: 228630 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

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)-消逝的时间(以分钟为单位)K7zR{{-:W[本资料来源于贵州学习网http://www.gzu521.com]K7zR{{-:W
显示时间差的默认模式是什么?为了找到这个问题的答案,让我们进行一个简单的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;

分享到:
评论

相关推荐

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

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

    oracle时间差表达式

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

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

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

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

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

    Oracle计算时间差常用函数

    本文将详细介绍如何使用Oracle的内置函数来计算两个Date类型字段之间的差异,例如START_DATE和END_DATE。 首先,我们来看如何计算天数差。Oracle提供了简单的减法运算符 `-` 来计算两个日期之间的差值,这个差值是...

    计算2个日期相差天数、去除节假日周末

    在编程领域,尤其是在数据分析、日程管理或者时间序列分析中,计算两个日期之间的差异并考虑工作日排除节假日和周末是一项常见的任务。C++作为一种强大的系统级编程语言,提供了丰富的库来处理日期和时间操作。本篇...

    自写函数时间差计算函数

    `f_facttimelen_except_illgegal` 是一个用 PL/SQL 编写的 Oracle 数据库函数,其主要作用是计算两个时间点之间的有效工作时间长度,即在计算过程中会自动忽略掉非工作时间段(即夜间时间)。函数接受两个参数: - `...

    计算两个日期相隔天数并减去节假日

    计算两个日期相隔天数并减去节假日,这个可以使用在各种需要通知的场景以及工作日提醒等

    oracle返回相差的天数

    通过上述内容可以看出,在Oracle中计算两个日期之间的差值是一项非常实用且简单的操作。只要正确使用`TO_DATE`函数对日期进行格式化,并进行减法运算即可轻松获取所需结果。这种能力对于处理各种涉及日期计算的业务...

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

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

    Oracle中实现datadiff函数

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

    oracle中TIMESTAMP与DATE比较

    在计算两个时间点之间的差值时,`TIMESTAMP`类型提供了一个更加直观和方便的方法。当两个`TIMESTAMP`值相减时,Oracle会直接返回一个以“天.小时:分钟:秒”格式表示的时间差,其中秒部分可能包含小数,这使得结果的...

    Oracle时间区间段合并.pdf

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

    sql确定两个日期之间的月份数或年数

    在进行数据分析或者处理与时间相关的业务逻辑时,经常会遇到需要计算两个日期之间的差异的问题,尤其是月份数和年数的差异。这样的需求在人力资源管理、财务分析等领域非常常见。比如,计算第一个员工和最后一个员工...

    oracle时间函数

    4. **Months_between**:它计算两个日期之间的月数差。例如,`SELECT months_between(sysdate, to_date('2005-11-12', 'yyyy-mm-dd')) FROM dual;`将返回从当前日期到指定日期的月数差。 5. **Next_day**:这个函数...

    mysql 时间差及字符串时间转换

    在MySQL中,我们可以使用`DATEDIFF()`函数来计算两个日期或时间之间的差值,单位默认为天。这个函数接受两个日期或时间参数,返回它们之间的天数差。例如,计算当前时间(`NOW()`)与指定日期('2012-08-01 12:11:...

    oracle_日期_加减方法

    - `MONTHS_BETWEEN(date1, date2)`:计算两个日期之间的月份数,考虑了闰年的影响。 - `NEW_TIME(date, timezone1, timezone2)`:根据给定的时区转换时间。 - `NEXT_DAY(date, dayOfWeek)`:返回给定日期之后的第...

    在Oracle 9i中如何设置时间间隔型数据

    在此之前,开发者通常使用DATE类型来记录时间点,但要表示两个时间点之间的差距,即时间间隔,就不得不将时间间隔转换为秒数存储在NUMBER列中,这给时间计算带来了很多不便。 Oracle 9i新增了两种时间间隔类型:...

    ORACLE内部函数大全以及与SQLSERVER的区别

    - `MONTHS_BETWEEN/DATEDIFF`: 计算两个日期之间的月份数差,Oracle 使用 `MONTHS_BETWEEN`,SQL Server 使用 `DATEDIFF`。 - `SYSDATE/GETDATE()`: 获取当前日期和时间,Oracle 使用 `SYSDATE`,SQL Server 使用 ...

Global site tag (gtag.js) - Google Analytics