Oracle查询时差(以秒为单位)
Posted
技术标签:
【中文标题】Oracle查询时差(以秒为单位)【英文标题】:Oracle query for time difference in seconds 【发布时间】:2013-12-10 19:20:54 【问题描述】:我正在寻找一个查询来查找两个时间字段之间的差距。
COL3
中的表 A
和表 B
都包含时间值。 8:13:54
。 COL3
是一个字符字段。
表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查询时差(以秒为单位)的主要内容,如果未能解决你的问题,请参考以下文章