2014-11-28 6 views
0

Я хотел бы знать, как получить разницу между двумя датами. Проблема, с которой я сталкиваюсь, заключается в том, что мне нужно преобразовать дату из таблицы в удобную дату. т.е. 7841433540 преобразуется в 09/10/14 09:19:00. My SQL, чтобы вернуть эти значения является:Найти разницу между двумя датами Oracle SQL

SELECT ddt.tochar(ENC_START_DDT,'MM/DD/YY HH24:MI:SS') "Admit", TO_CHAR(SYSTIMESTAMP,'MM/DD/YY HH24:MI:SS') "Today" from CCDBA.PATIENT where CCDBA.PATIENT.PAT_SEQ = '101067048';

Теперь я думал, что я мог бы ...

SELECT ddt.tochar(ENC_START_DDT,'MM/DD/YY HH24:MI:SS')-TO_CHAR(SYSTIMESTAMP,'MM/DD/YY HH24:MI:SS') 

из CCDBA.PATIENT где CCDBA.PATIENT.PAT_SEQ = '101067048';

Но что возвращает:

ORA-01722: неправильный номер 01722. 00000 - "неверный номер" * Причина:
* Действие:

Любая помощь очень ценится

+0

Помогает ли информация на этой странице? http://stackoverflow.com/questions/1096853/calculate-difference-between-2-date-times-in-oracle-sql – RaifMT

+0

Я видел это, но ответ ниже работал, я забыл, чтобы преобразовать до даты. Я доберусь туда, немного за раз! – user2037188

ответ

0

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

select (to_date(ddt.tochar(ENC_START_DDT,'MM/DD/YY HH24:MI:SS'), 'MM/DD/YY HH24:MI:SS') - 
     sysdate) as diff 
from CCDBA.PATIENT 
where CCDBA.PATIENT.PAT_SEQ = '101067048'; 
+0

Это сработало, возвращено отрицательное значение, поэтому я просто поменял их. Большое вам спасибо! – user2037188

Смежные вопросы