Oracle - Дата - Дата выпуска - PullRequest
       0

Oracle - Дата - Дата выпуска

0 голосов
/ 16 января 2020

Я пытаюсь вычислить разницу между датами. Мне нужно только десятичное число дня, поэтому дата - все, что мне нужно.

Проблема, с которой я столкнулся, заключается в том, что это работает для некоторых записей, но не для других, без реальной схемы. Используя ниже:

select (case when c.call_answered_date is null then c.call_ended_date - c.call_entered_queue_date else 0 end),
C.CALL_ENTERED_SYSTEM_DATE, C.CALL_ENTERED_QUEUE_DATE, C.CALL_ENDED_DATE

Я получаю

abd_wait              call_entered_system_date        call_entered_queue_date     call_ended_date
--------              ------------------------        -----------------------     ---------------
5.78703703703704E-5   06/01/2020 12:30:00             06/01/2020 12:30:11         06/01/2020 12:30:16
0.000844907407407407  06/01/2020 12:35:38             06/01/2020 12:35:49         06/01/2020 12:37:02

Таким образом, вторая строка работает как положено, первая - нет. Но я не знаю почему.

Мне нужно, чтобы все они были десятичной дробью дня, как вторая строка.

Пожалуйста, помогите.

1 Ответ

1 голос
/ 16 января 2020

Первая строка имеет правильное значение и указана только в научном формате. c Обозначение: 5.78703703703704E-5 соответствует: 0.0000578703703703704, что составляет 5 секунд, выраженных в виде доли дня: (16-11)/24/60/60. Значение по-прежнему представляет собой (десятичное) число, которое просто отображается в несколько ином формате.

Если вы хотите, чтобы оно представляло собой фиксированную отформатированную десятичную строку, тогда используйте TO_CHAR, чтобы задать число в явном формате:

select case
       when c.call_answered_date is null
       then TO_CHAR(
              c.call_ended_date - c.call_entered_queue_date,
              '0.000000000000000000'
            )
       else '0'
       end,
       C.CALL_ENTERED_SYSTEM_DATE,
       C.CALL_ENTERED_QUEUE_DATE,
       C.CALL_ENDED_DATE
FROM   your_table c
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...