Выбор минимальной разницы между двумя датами в Oracle, когда даты представлены в виде отметок времени UNIX - PullRequest
0 голосов
/ 13 сентября 2011

Существует много вопросов о разнице между двумя датами в Oracle.Мой вопрос требует, чтобы запрос выполнял еще несколько вещей.

Вот как далеко я продвинулся в данный момент

select m_bug_t.date_submitted, m_bug_history_t.date_modified
from m_bug_t, m_bug_history_t
where m_bug_t.id = m_bug_history_t.bug_id
and field_name = 'status'
and new_value = '100'

Пока я получаю набор пар дат, возвращаемых вот так

date_submitted | date_modified
1314894774     | 1315906468
...
...

Я хочу преобразовать эти числа в даты, найти разницу между ними и затем получить минимум всех результатов.Я хочу, чтобы разница была представлена ​​в днях.

Есть идеи, как это сделать?

Большое спасибо:).

Ответы [ 2 ]

3 голосов
/ 13 сентября 2011

Ну, временные метки Unix выражаются в виде количества секунд с 01 января 1970 года, поэтому, если вы вычтете одно из другого, вы получите разницу в секундах. Тогда разница в днях просто делится на количество секунд в дне:

(date_modified - date_submitted) / (24*60*60)

или

(date_modified - date_submitted) / 86400
1 голос
/ 13 сентября 2011

Чтобы преобразовать время UNIX в дату, вы можете использовать:

DATE '1970-01-01' + numtodsinterval(:unix_time_stamp, 'second')

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

SELECT MIN(dt_mod - dt_sub)
  FROM (SELECT DATE '1970-01-01' 
               + numtodsinterval(m_bug_t.date_submitted, 'second') dt_sub,
                DATE '1970-01-01' 
                + numtodsinterval(m_bug_history_t.date_modified, 'second') dt_mod
           FROM m_bug_t, m_bug_history_t
          WHERE m_bug_t.id = m_bug_history_t.bug_id
            AND field_name = 'status'
            AND new_value = '100')

Конечно, как и другие предполагали, что вам на самом деле не нужно делать это преобразование ДАТЫ, вы можете просто вычесть ваши 2 временные метки (разницу в секундах) и преобразовать результат в дни.

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