Как я могу получить разницу в часах между двумя датами? - PullRequest
5 голосов
/ 28 февраля 2012

Мне нужно сделать «выбор», который возвращает разницу между полем типа date из базы данных и текущей датой в часах.Как я могу сделать это в оракуле?

Я пытаюсь это:

   select 24 * (to_date(sysdate, 'YYYY-MM-DD hh24:mi') 
         - to_date('2012-02-28 15:20', 'YYYY-MM-DD hh24:mi')) diff_hours 
   from dual;

Но это не сработало.

Ответы [ 3 ]

13 голосов
/ 28 февраля 2012

Ошибка в том, что SYSDATE уже является датой, поэтому нет необходимости использовать TO_DATE() для преобразования ее в дату.

Если вы не конвертируете его в дату:

select
    24 * (sysdate - to_date('2012-02-28 15:20', 'YYYY-MM-DD hh24:mi')) as diff_hours
from dual;

И если форматирование дат неверно, вы можете использовать два шага, например:

select
    24 * (to_date(to_char(sysdate, 'YYYY-MM-DD hh24:mi'), 'YYYY-MM-DD hh24:mi') - to_date('2012-02-28 15:20', 'YYYY-MM-DD hh24:mi')) as diff_hours
from dual;
0 голосов
/ 31 октября 2018

Я так и сделал: select to_number(to_char(sysdate,'HH24')) - to_number(to_char(*YOUR_DATA_VALUE*,'HH24')),max(exp_time) from ...

Также вы можете проверить это за минуты: введите описание ссылки здесь

0 голосов
/ 28 февраля 2012
select trunc((sysdate - to_date('2012-02-28 15:20', 'YYYY-MM-DD hh24:mi')) / 24)
  from dual;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...