powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Вопрос с датами
12 сообщений из 12, страница 1 из 1
Вопрос с датами
    #39389560
maxwait
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Доброго времени суток.
Подскажите как вывести последний день рабочего дня месяца в периоде между датами
select trunc(p.Date_Begin) [Дата Начала]
, trunc(p.Date_End) [Дата Окончания]
, trunc(p.Date_End) - trunc(p.Date_begin) [Кол-во дней между датами]
, MONTHS_BETWEEN(trunc(p.Date_End), trunc(p.Date_begin)) [Кол-во месяцев между датами]
, ...???? [Последний рабочий день за период месяцев ]
from table p
where p.Date_begin <= '01.01.2017' and ( p.Date_End > '01.01.2017' or p.Date_End is null)
помогите с запросом.

Как получить такой результат.
[Дата Начала] [Дата Окончания] [Кол-во дней между датами] [Кол-во месяцев между датами] [Кол-во месяцев между датами]
'26.12.2016' | '26.06.2017' | 182 | 6 | 31.01.2017
'26.12.2016' | '26.06.2017' | 182 | 6 | 28.02.2017
'26.12.2016' | '26.06.2017' | 182 | 6 | 31.03.2017
'26.12.2016' | '26.06.2017' | 182 | 6 | 28.04.2017
'26.12.2016' | '26.06.2017' | 182 | 6 | 31.05.2017
'26.12.2016' | '26.06.2017' | 182 | 6 | 26.06.2017

Заранее спасибо!
...
Рейтинг: 0 / 0
Вопрос с датами
    #39389562
maxwait
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Опечатался

[Дата Начала] [Дата Окончания] [Кол-во дней между датами] [Кол-во месяцев между датами] [Послед рабочий день месяца]
'26.12.2016' | '26.06.2017' | 182 | 6 | 31.01.2017
'26.12.2016' | '26.06.2017' | 182 | 6 | 28.02.2017
'26.12.2016' | '26.06.2017' | 182 | 6 | 31.03.2017
'26.12.2016' | '26.06.2017' | 182 | 6 | 28.04.2017
'26.12.2016' | '26.06.2017' | 182 | 6 | 31.05.2017
'26.12.2016' | '26.06.2017' | 182 | 6 | 26.06.2017
...
Рейтинг: 0 / 0
Вопрос с датами
    #39389566
Oleg M.Ivanov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Легко:
select 'МЕСЯЦ - последний день',last_day(trunc(sysdate)) from dual;
...
Рейтинг: 0 / 0
Вопрос с датами
    #39389569
maxwait
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Oleg M.Ivanov,

last_day(trunc(sysdate)) последний день месяца, вот в апреле последний рабочий день месяца 28 число, а запрос вернет 30 что не верно, т.к. 30 это воскресенье.
...
Рейтинг: 0 / 0
Вопрос с датами
    #39389571
Oleg M.Ivanov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Oleg M.IvanovЛегко:
select 'МЕСЯЦ - последний день',last_day(trunc(sysdate)) from dual;
Это последний день месяца, а с рабочими днями как-то так:
Код: plsql
1.
2.
3.
4.
5.
6.
select last_day(sysdate) - case trim(to_char(last_day(sysdate), 'DAY', 'NLS_DATE_LANGUAGE=ENGLISH'))
           when 'SUNDAY' then 2
           when 'SATURDAY' then 1
           else 0
        end 
  from dual;
...
Рейтинг: 0 / 0
Вопрос с датами
    #39389574
maxwait
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maxwait,

но это не проблема найти последний рабочий день месяца, нашел вот такой запрос
select last_day('01.04.2017')
- case trim(to_char(last_day('01.04.2017'), 'DAY', 'NLS_DATE_LANGUAGE=ENGLISH'))
when 'SUNDAY' then 2
when 'SATURDAY' then 1
else 0
end
from dual;
Но я не могу сообразить как его применить в моем случае, т.е. мне надо параметром передать в дату 01.01.2017, и так все 6-то месяцев чтобы получить Послед рабочий день месяца
31.01.2017
28.02.2017
31.03.2017
28.04.2017
31.05.2017
26.06.2017
...
Рейтинг: 0 / 0
Вопрос с датами
    #39389575
123йй
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maxwaitвот в апреле последний рабочий день месяца 28 число
а календать исключений уже создал ?
...
Рейтинг: 0 / 0
Вопрос с датами
    #39389577
мартец
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
maxwait последний рабочий день месяца 28 числоой не факт.за то, что попутал бд, могут и раньше последний рабочий день устроить.
...
Рейтинг: 0 / 0
Вопрос с датами
    #39389580
maxwait
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
123йй,

нет, календарь исключений еще не создал, хоть так для начала сделать, а потом уже и про исключения думать)
...
Рейтинг: 0 / 0
Вопрос с датами
    #39389583
maxwait
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
мартец,

Ну, надеюсь что не устроят...
...
Рейтинг: 0 / 0
Вопрос с датами
    #39389592
Oleg M.Ivanov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
maxwaitНо я не могу сообразить как его применить в моем случае, т.е. мне надо параметром передать в дату 01.01.2017, и так все 6-то месяцев чтобы получить Послед рабочий день месяца

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
declare
v_date date;
v_date_out date;
begin
v_date := to_date('26.06.2017','dd,mm.yyyy');
  select last_day(v_date) - case trim(to_char(last_day(v_date), 'DAY'))
           when 'SUNDAY' then 2
           when 'SATURDAY' then 1
           else 0
        end  
into v_date_out        
  from dual;  
dbms_output.put_line(v_date_out);  
end;  
...
Рейтинг: 0 / 0
Вопрос с датами
    #39389602
maxwait
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Oleg M.Ivanov,

Спасибо!
...
Рейтинг: 0 / 0
12 сообщений из 12, страница 1 из 1
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Вопрос с датами
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]