Показать все вакансии с 1 апреля до конца предыдущего месяца - PullRequest
1 голос
/ 10 февраля 2020

Я пытаюсь настроить некоторые отчеты, чтобы показать информацию о финансовом году - конце предыдущего месяца, но я застрял при попытке установить фильтр даты. например, если бы я запустил отчет сейчас, он отобразил бы все задания в системе с 1 апреля 2019 года по 31 января 2020 года.

фиктивный код, который я получил:

select
job.job_number,
job.job_logged_date,
job.actual_comp_date,
job.job_type

from
job

where

Это просто ГДЕ раздел, с которым у меня проблемы.

Я знаю, что в предыдущие месяцы я мог использовать

where job.actual_comp_date >= trunc(trunc(SYSDATE,'MM')-1,'MM') AND job.actual_comp_date <=trunc(SYSDATE,'MM') 

, но я не могу вспомнить, как это можно изменить, указав c дата (например, 1 апреля 2019 года) до конца предыдущего месяца.

Ответы [ 5 ]

1 голос
/ 10 февраля 2020

Я думаю, вы просто хотите trunc():

where job.actual_comp_date < trunc(SYSDATE, 'MON') and
      job.actual_comp_date >= date '2019-04-01' 

Если вы хотите, чтобы текущий финансовый год основывался на текущей дате, то:

where job.actual_comp_date < trunc(SYSDATE, 'MON') and
      job.actual_comp_date >= add_months(trunc(add_months(sysdate, -3), 'YYYY'), 3)
1 голос
/ 10 февраля 2020

Попробуйте:

where job.actual_comp_date > to_date('01-04-2019 00:00:00', 'DD-MM-YYYY HH24:MI:SS') 
and job.actual_comp_date < to_date('31-01-2020 23:59:59', 'DD-MM-YYYY HH24:MI:SS')

Если вы хотите, чтобы дата была последним днем ​​предыдущего месяца, вы можете попробовать:

where job.actual_comp_date > to_date('01-04-2019 00:00:00', 'DD-MM-YYYY HH24:MI:SS') 
and job.actual_comp_date < last_day(add_months(sysdate,-1))
0 голосов
/ 10 февраля 2020

Также

WITH da(date_h) AS (
SELECT '2019-12-30'  date_h FROM dual union all
SELECT '2018-12-30'  date_h FROM dual union all
SELECT '2020-02-20'  date_h FROM dual union all
SELECT '2019-08-30'  date_h FROM dual  
)
SELECT date_h FROM da WHERE 
to_date(date_h, 'yyyy-mm-dd') >= to_date('2019-04-01','yyyy-mm-dd') 
AND 
to_date(date_h, 'yyyy-mm-dd') <= LAST_DAY(ADD_MONTHS(sysdate, -1)) --to_date('2020-01-31','yyyy-mm-dd') 

дБ <> скрипка

0 голосов
/ 10 февраля 2020

Вы можете использовать следующие логи c:

where job.actual_comp_date >= trunc(trunc(sysdate) - interval '3' month, 'year') 
                                      + interval '3' month
AND job.actual_comp_date < trunc(trunc(sysdate) - interval '3' month, 'year') 
                                      + interval '15' month ;

Cheers !!

0 голосов
/ 10 февраля 2020

Вы можете попробовать ниже

where job.actual_comp_date >= to_date('2019-12-30','yyyy-mm-dd') AND job.actual_comp_date <=LAST_DAY(ADD_MONTHS(sysdate, -1)) 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...