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

6

我正在寻找一种查询方法,以查找两个时间字段之间的差距。

A和表B中都包含时间值的COL3。它们的格式为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,但它没有起作用。我该怎么做才能实现呢?

这对我有帮助。谢谢。

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))))


2
col3的数据类型是什么?在Oracle中,time不是有效的数据类型。您是否有一个interval?一个date?一个varchar2以(希望)单个格式存在吗? - Justin Cave
1个回答

15

像这样:

select (laterDate - earlierDate) * 24 * 60 * 60 seconds
from etc
在Oracle中,日期是数字。每个整数增量代表一个日历日。

4
我不同意。在Oracle中,日期的数据类型是DATE。日期之间(日期类型)的差异以天数(NUMBER数据类型)表示。所以类似"to_date('01/01/2013','MM/DD/YYYY') - to_date('12/31/2012','MM/DD/YYYY')"的表达式将返回数字1,表示两个日期相差1天。 - Mark J. Bobak
是的,你说得对Mark。以下查询适用于我: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/(246060))) OR TO_DATE(B.COL3,'hh:mi:ss') = (TO_DATE(B.COL3,'hh:mi:ss') - (120/(246060))) ) - user3080572

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,