Oracle находит среднее из двух временных меток - PullRequest
3 голосов
/ 04 октября 2011

Я не вижу, что это такое, но я не могу найти решение где-либо.Это сделано для свиданий, но я не могу заставить его работать для TIMESTAMP.

Я пытаюсь сделать

select avg(last_timestmp - ref_timestmp) as average from param

Мне все время говорятне правильный номер, который я получаю.Но как мне сделать его действительным числом?Я пробовал извлечь и кучу других вещей, но ничего не работает.

Я хочу среднее значение в секундах.одна сотая секунды будет .01, а 6 часов - 21600

Спасибо!

Ответы [ 2 ]

3 голосов
/ 04 октября 2011

Вы можете использовать EXTRACT, чтобы получить части в виде секунд и сложить их, а затем рассчитать свое среднее значение:

select
    avg(extract(second from intrvl)
        + extract(minute from intrvl) * 60
        + extract(hour from intrvl) * 60 * 60
        + extract(day from intrvl) * 60 * 60 * 24) average
from (
    select (last_timestmp - ref_timestmp) intrvl 
    from param
)
2 голосов
/ 04 октября 2011

Вы можете попробовать

SELECT AVG(p.last_date - p.ref_date) as average FROM (
  SELECT 
    last_timestamp - TO_DATE('1970-01-01', 'YYYY-MM-DD') \* 8640000 as last_date
    ,ref_timestamp - TO_DATE('1970-01-01', 'YYYY-MM-DD') \* 8640000 as ref_date
  FROM param ) p

Это даст вам разницу в миллисекундах.

См .: http://blogs.oracle.com/mock/entry/converting_oracle_dates_to_unix

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...