Дата SQL и время - PullRequest
       38

Дата SQL и время

0 голосов
/ 04 октября 2018

Мне нужно взять список студентов с датой и временем приема заявок в базе данных университета.Отчет отправляется руководству в 18:00 вечера, но руководство может запустить его в 19:00 или в любое другое время в течение ночи.Заявка должна быть только за 2 дня до даты составления отчета.

ORACLE: Я создал запрос, но он выдаст заявку всего за 24 часа в сутки.Проблема с этим запросом заключается в том, что руководство выполняет запрос в 18:00 и 20:00, и все учащиеся принимаются в это время.Результат будет другим.

select 
    to_char(application_accepted_date, 'DD-MON-RR:HH24:MI:SS')
from 
    tbl_application_accepted_date
where 
    to_date(application_accepted_date, 'DD-MON-rr:HH24:MI:SS') = 
    to_date(trunc(sysdate-2), 'DD-MON-rr:HH24:MI:SS')

;

Если какая-либо заявка будет принята между 6 впереди, мне нужен список в отчете за следующие дни.Значит, у меня должен быть список принятых студентов с 18:00 предыдущего дня до 5:59 дня подачи заявления.I am getting application accepted after 6 PM, which I don't need in todays report, I should get this on next day report. The report is run on 4th OCT 2018

Я получаю заявление, принятое после 18:00, которое мне не нужно в сегодняшнем отчете, я должен получить это в отчете на следующий день.Отчет составлен 4 октября 2018 года

Ответы [ 2 ]

0 голосов
/ 05 октября 2018

Если это нужно отключить в 6 вечера, то просто добавьте 18/24 (18 часов) к усеченной дате.Вы также делаете много ненужного кастинга.Поскольку application_accepted_date является полем даты, вы можете просто сравнить его как дату.

select to_char(application_accepted_date, 'DD-MON-RR:HH24:MI:SS')
from tbl_application_accepted_date
where application_accepted_date >= trunc(sysdate-3)+18/24
  and application_accepted_date <  trunc(sysdate-2)+18/24

Это даст вам любые приложения, которые начинаются с 6 вечера 3 дня назад и до 6 вечера 2 дня назад.

РЕДАКТИРОВАТЬ : Вы также можете сделать это с интервалами, если хотите.Тот же запрос, что и выше, но более точный в ваших намерениях.

select to_char(application_accepted_date, 'DD-MON-RR:HH24:MI:SS')
    from tbl_application_accepted_date
    where application_accepted_date >= trunc(sysdate-3) + interval '18' hour
      and application_accepted_date <  trunc(sysdate-2) + interval '18' hour
0 голосов
/ 04 октября 2018

Предполагая, что application_accepted_date является типом данных DATE в вашей модели данных, попробуйте следующее:

select 
    to_char(application_accepted_date, 'DD-MON-RR:HH24:MI:SS')
from 
    tbl_application_accepted_date
    WHERE  application_accepted_date BETWEEN to_date(To_char(Trunc(SYSDATE - 1),'YYYY-MM-DD') 
                  ||'18:00:00','YYYY-MM-DD HH24:MI:SS) and to_date(to_char(trunc(sysdate),'yyyy-mm-dd')||'17:59:59','yyyy-mm-dd hh24:MI:SS)

Это всегда должно возвращать данные с 18:00 вчера до 17:59:59 сегодня.

Надеюсь, это поможет.

...