Выполнить вариант запроса на основе оператора IF - PullRequest
0 голосов
/ 12 декабря 2018

Попытайтесь объяснить это просто ниже.

Простой оператор if (в действительности это будет похоже на

if sysdate >= trunc(sysdate)+5/24

), настройте параметры, которые будут использоваться в запросе

if 2>=1 then
  define ThisTime = trunc(sysdate)-1
else
  define ThisTime = trunc(sysdate)

select *
from table
where time >= &ThisTime

Выше не работает, и мне интересно, если это возможно?К сожалению, это статический запрос мониторинга, который запускается из sqltoolkit в itrs, и я не могу придумать другой способ выбора времени пролонгации.

Ответы [ 2 ]

0 голосов
/ 12 декабря 2018

Если вы пытаетесь получить данные за вчерашний день, если они выполняются до 5:00, и данные за сегодняшний день, если они выполняются после 5:00, вы можете отрегулировать время фильтра за пять часов до его усечения:

select *
from your_table
where time >= trunc(sysdate - 5/24)
and time < trunc(sysdate + 19/24)

При запуске, скажем, 04:59, sysdate - 5/24 оценивается до 23:59 вчера, а sysdate + 19/24 оценивается до 23:59 сегодня;усечение этих значений дает полночь вчера и полночь сегодня.

При запуске, скажем, 05:01, sysdate - 5/24 оценивается в 00:01 сегодня, а sysdate + 19/24 - в 00:01 завтра;усечение этих дает полночь сегодня и полночь завтра.

0 голосов
/ 12 декабря 2018

Вы можете реализовать это решение как ИЛИ, даже если в большинстве случаев оно будет работать довольно плохо (я склонен избегать условий ИЛИ):

select *
  from table
 where (sysdate >= trunc(sysdate)+5/24 and time >= trunc(sysdate))
       or (sysdate < trunc(sysdate)+5/24 and time >= trunc(sysdate) - 1)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...