Оракул; две даты, разница в минутах

Я хочу получить разницу в минутах как целое число между sysdate и utcdate. это не работает:

select ROUND((sysdate-SYS_EXTRACT_UTC(SYSTIMESTAMP))*1440,0) from dual

Он выдает сообщение об ошибке: ORA-00932: несовместимые типы данных: ожидаемое ЧИСЛО получило ИНТЕРВАЛ ДЕНЬ ДО ВТОРОЙ Строка сценария 21, строка оператора 1, столбец 52

Что делать? Большое спасибо!


person Willi Fischer    schedule 21.11.2013    source источник


Ответы (1)


Попробуй это. Вам нужно преобразовать тип данных systimestamp в тип даты, прежде чем вы сможете выполнять математические операции с двумя датами. Может быть, есть более элегантное решение, но это, похоже, работает.

SELECT ROUND (  (  SYSDATE
                 - TO_DATE (TO_CHAR (SYS_EXTRACT_UTC (SYSTIMESTAMP),
                                     'YYYY-MON-DD HH24:MI:SS'
                                    ),
                            'YYYY-MON-DD HH24:MI:SS'
                           )
                )
              * 1440,
              0
             )
  FROM DUAL
person OldProgrammer    schedule 21.11.2013
comment
Можно немного упростить. (sysdate - cast(SYS_EXTRACT_UTC (SYSTIMESTAMP) as date)) * 1440. В этой ситуации действительно нет необходимости выполнять обратное и обратное преобразование. - person Nick Krasnov; 21.11.2013
comment
Спасибо, стало чище. - person OldProgrammer; 21.11.2013