我遇到需要获取两列之间差异的情况。日期Oracle中的时间差计算
第1栏:01-OCT-13 10点27分15秒
第2栏:01-OCT-13 10时28分00秒
我需要得到与上述两者之间的差异列。我尝试使用' - '运算符,但输出不是预期的方式。
我需要输出如下:00-00-00 00:00:45
我遇到需要获取两列之间差异的情况。日期Oracle中的时间差计算
第1栏:01-OCT-13 10点27分15秒
第2栏:01-OCT-13 10时28分00秒
我需要得到与上述两者之间的差异列。我尝试使用' - '运算符,但输出不是预期的方式。
我需要输出如下:00-00-00 00:00:45
尝试此查询,但没有进行测试
SELECT extract(DAY
FROM diff) days,
extract(hour
FROM diff) hours,
extract(MINUTE
FROM diff) minutes,
extract(SECOND
FROM diff) seconds,
extract(YEAR
FROM diff) years
FROM
(SELECT (CAST (to_date(t.column1, 'yyyy-mm-dd hh:mi:ss') AS TIMESTAMP) -CAST (to_date(t.column2, 'yyyy-mm-dd hh:mi:ss') AS TIMESTAMP)) diff
FROM tablename AS t)
但是,只有秒差异正确..!?如果日期以及时间和分钟也有所不同,该怎么办? – user2037445
是的它的工作很好。我可以提取所有在一个单一的查询? – user2037445
是的,它的工作非常感谢你。如果我想找到月份和年份的差异,我是否应该按照相同的程序 – user2037445
试试这个太,
WITH T(DATE1, DATE2) AS
(
SELECT TO_DATE('01-OCT-13 10:27:15', 'DD-MON-YY HH24:MI:SS'),TO_DATE('01-OCT-13 10:28:00', 'DD-MON-YY HH24:MI:SS') FROM DUAL
)
SELECT floor(date2 - date1)
|| ' DAYS '
|| MOD(FLOOR ((date2 - date1) * 24), 24)
|| ' HOURS '
|| MOD (FLOOR ((date2 - date1) * 24 * 60), 60)
|| ' MINUTES '
|| MOD (FLOOR ((date2 - date1) * 24 * 60 * 60), 60)
|| ' SECS ' time_difference
FROM T;
我没有得到你。 :( – user2037445
另一种方法来提取几天,几小时,几分钟和几秒B/W两个日期 – Dba
你可以请使用以下查询找到差异seconds
:
select 24*60*60*
(to_date('01-OCT-13 10:28:00', 'yyyy-mm-dd hh24:mi:ss')-
to_date('01-OCT-13 10:27:15', 'yyyy-mm-dd hh24:mi:ss')) diff_secs
from dual;
但我需要日期之间的差异以及包括日,月,年,小时,分钟,秒 – user2037445
时间怎么可能是'10:27:60'?那将是'10:28:00'(一分钟60秒)。这些“DATE”列(在这种情况下尾部60是无效的)?或者它们是'时间戳'列(在这种情况下,尾部60可能意味着代表小数秒,而您只是错过了整秒数)? –
哦对不起...我的错误.. :) – user2037445
列是类型DATE – user2037445