Отредактируйте ответ, который возвращает мой выбор - PullRequest
0 голосов
/ 07 октября 2019

У меня есть выбор, чтобы найти разницу между двумя датами

select  SUBSTR(to_timestamp('19.09.2019 11:26:00', 'dd.mm.yyyy hh24:mi:ss' ) - to_timestamp('01.01.2019 00:00:00' , 'dd.mm.yyyy hh24:mi:ss' ),8, 12) diff 
from dual

Ответ, который я учу, правильный

261 11:26:00

Можно ли как-нибудь получить ответ этого формата

261 day 11 hour 26 min 00 sec

1 Ответ

2 голосов
/ 07 октября 2019

Используйте EXTRACT и конкатенацию строк:

SELECT EXTRACT( DAY FROM diff ) || ' days'
       || ' ' || LPAD( EXTRACT( HOUR   FROM diff ), 2, '0' ) || ' hours'
       || ' ' || LPAD( EXTRACT( MINUTE FROM diff ), 2, '0' ) || ' minutes'
       || ' ' || LPAD( EXTRACT( SECOND FROM diff ), 2, '0' ) || ' seconds'
         AS diff
FROM   (
  SELECT TIMESTAMP '2019-09-19 11:26:00' - TIMESTAMP '2019-01-01 00:00:00'
           AS diff 
  FROM   DUAL
)

Выходы:

| DIFF                                    |
| :-------------------------------------- |
| 261 days 11 hours 26 minutes 00 seconds |

дБ <> скрипка здесь

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