【问题标题】:Oracle query for time difference in secondsOracle查询时差(以秒为单位)
【发布时间】: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(希望)采用单一格式?

标签: sql oracle


【解决方案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))) )
猜你喜欢
  • 2021-10-05
  • 2012-05-01
  • 2014-06-24
  • 1970-01-01
  • 2014-05-01
  • 2014-07-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多