фильтр даты и времени в sql - PullRequest
0 голосов
/ 30 апреля 2018

У меня есть отчет, который будет генерироваться каждый час из SQL-запроса. Запрос здесь состоит в том, чтобы генерировать данные со вчерашнего вечера с 20.00 до 20.00. сегодня 12 часов дня. Я использую приведенный ниже запрос, но не получаю правильные данные:

select * from roster_report where job_start > TRUNC(SYSDATE-1) + 20/24 ;

Предположим, что сегодняшняя дата - 29 апреля, отчет, сгенерированный 29 апреля в 23:15, правильно отображает данные за 29 апреля с 20:00 до 23:15. данные становятся неверными после 00:00, когда он получает данные о 29 апреля, а не 30 апреля.

Запрос будет использоваться после каждого часа для генерации отчета. Я запускаю это в Oracle Oracle.

Ответы [ 3 ]

0 голосов
/ 30 апреля 2018

Попробуйте

WHERE 
    job_start >= ( TRUNC(SYSDATE-1) + INTERVAL '20' HOUR ) 
AND job_start <= ( TRUNC(SYSDATE)   + INTERVAL '12' HOUR  )

Вы можете просто использовать > или <, если это соответствует вашим требованиям. BETWEEN также можно использовать для простоты, если все, что вам нужно, это включенный диапазон.

0 голосов
/ 30 апреля 2018

Здесь у вас есть два пути:

SELECT * 
  FROM ROSTER_REPORT 
 WHERE JOB_START BETWEEN (TRUNC(SYSDATE - 1) + 20/24) 
                     AND TRUNC(SYSDATE) + 12/24 ;

или

SELECT * 
  FROM ROSTER_REPORT 
 WHERE JOB_START BETWEEN TO_DATE(TO_CHAR(SYSDATE-1,'DD/MM/RRRR')||' 20:00','DD/MM/RRRR HH24:MI') 
                     AND TO_DATE(TO_CHAR(SYSDATE  ,'DD/MM/RRRR')||' 12:00','DD/MM/RRRR HH24:MI');
0 голосов
/ 30 апреля 2018

за предыдущий день 8 вечера

SELECT to_char(trunc(SYSDATE -1) + 20/24,'mm/dd/yyyy hh24:mi:ss AM') FROM dual;

На сегодня 12:00

SELECT to_char(trunc(SYSDATE) + 12/24,'mm/dd/yyyy hh24:mi:ss AM') FROM dual;

Пример запроса

WITH DATA AS
( SELECT 'text' col, SYSDATE create_date FROM dual
  )
select *
from tw_logtable
where tw_logtable.created_datetime
BETWEEN (TRUNC(sysdate -1) + 20/24) AND (TRUNC(sysdate) + 12/24)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...