Форматирование даты sql plus - PullRequest
0 голосов
/ 31 марта 2011

У меня есть сценарий sql:

select 'LASTBUSDATE='|| to_char(max(calen_dt),'mmdd') LBD
from put_calen
where calen_dt < (select calen_dt from put_calen where ca_run_dt_ind = 'Y')
and business_day_ind = 'Y';
exit;

Как я могу изменить это, чтобы я получил первый рабочий день и последний рабочий день предыдущего месяца, например 2-1-2011 и 2-28-2011

Пожалуйста, помогите. Не знаю, что здесь происходит.

1 Ответ

0 голосов
/ 31 марта 2011

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

select min(calen_dt) as first_business_day
      ,max(calen_dt) as last_business_day
  from put_calen
 where calen_dt >= trunc(sysdate,'MM') - interval '1' month
   and calen_dt <= trunc(sysdate,'MM') - interval '1' day
   and business_day_ind = 'Y';

Если sysdate = "2011-03-31 19:14:32", то trunc(sysdate,'MM') вернет "2011-03-01 00:00:00"; в основном дата урезана до месяца.

Вы хотели первый и последний рабочий день в предыдущем месяце, поэтому я вычел 1 месяц, чтобы прийти к первому из предыдущего месяца, и 1 день, чтобы прийти в последний день предыдущего месяца. Фильтр business_day_ind = 'Y' проверяет, чтобы мин / макс учитывались только рабочие дни.

Дайте мне знать, как это работает, или если я неправильно понял ваш вопрос и / или структуру таблицы:)

...