Oracle查询时差(以秒为单位)

Posted

技术标签:

【中文标题】Oracle查询时差(以秒为单位)【英文标题】:Oracle query for time difference in seconds 【发布时间】:2013-12-10 19:20:54 【问题描述】:

我正在寻找一个查询来查找两个时间字段之间的差距。

COL3 中的表 A 和表 B 都包含时间值。 8:13:54COL3 是一个字符字段。

B 也有相同的字段。我想查询以下条件。

A.COL1 = B.COL1 and 
A.COL2 = B.COL2 and 
(COL3 in a should equal to + / - 120 secs of COL B).

我尝试使用TO_DATE,但没有成功。我怎样才能做到这一点?

这对我有用。谢谢。

选择 A.、B. 从甲,乙 其中 A.COL1 = B.COL1 和 A.COL2 = B.COL2 AND (TO_DATE(B.COL3,'hh:mi:ss') = (TO_DATE(B.COL3,'hh:mi:ss') + (120/(24*60*60))) OR TO_DATE(B.COL3,'hh:mi:ss') = (TO_DATE(B.COL3,'hh:mi:ss') - (120/(24*60*60))) )

【问题讨论】:

col3的数据类型是什么? time 不是 Oracle 中的有效数据类型。你有interval 吗? date? varchar2(希望)采用单一格式? 【参考方案1】:

类似这样的:

select (laterDate - earlierDate) * 24 * 60 * 60 seconds
from etc

在 oracle 中,日期是数字。每个整数增量代表一个日历日。

【讨论】:

我不同意。在 Oracle 中,日期的类型是 DATE。日期(DATE 类型)之间的差异表示为天数(NUMBER 数据类型)。所以,像 "to_date('01/01/2013','MM/DD/YYYY') - to_date('12/31/2012','MM/DD/YYYY')" 这样的东西会返回一个数字 1,这意味着相差 1 天。 是的,你是对的,马克。下面的查询对我有用 SELECT A., B. FROM A, B WHERE A.COL1 = B.COL1 AND A.COL2 = B.COL2 AND ( TO_DATE( B.COL3,'hh:mi:ss') = (TO_DATE(B.COL3,'hh:mi:ss') + (120/(24*60*60))) 或 TO_DATE(B.COL3,'hh :mi:ss') = (TO_DATE(B.COL3,'hh:mi:ss') - (120/(24*60*60))) )

以上是关于Oracle查询时差(以秒为单位)的主要内容,如果未能解决你的问题,请参考以下文章

Oracle SQL 查询移动平均线

要计算以秒为单位的持续时间的50%?

如何根据熊猫的时差为用户设置会话

计算时差超过 24 小时

Spark SQL datediff 以秒为单位

SQL Datediff 以秒为单位,带小数位