CftClub.ru
Клуб специалистов ЦФТ-Банк

получение даты

 
Ответить на тему    Клуб специалистов ЦФТ-Банк (IBSO) -> Справочник PL/PLUS: Функции, примеры, приёмы
Предыдущая тема :: Следующая тема  
Автор Сообщение
wolfio
Участник - экстремал


Вступление в Клуб: 22.10.2012
СообщениеСр Фев 27, 2013 06:31   получение даты Ответить с цитатой
Полезность: Нет оценки
уважаемые знатоки, пожалуйста подскажите, каким способом можно найти 1ое число предыдущего месяца? и вывести эту дату в формате ddmmyyyy. возвращаемый тип данных должен быть датой.
lexus
Профи


Вступление в Клуб: 28.09.2007
СообщениеСр Фев 27, 2013 06:59    Ответить с цитатой
Полезность: 1
кхм... lastday помню, firstday не помню Laughing
кто проще предложит?

Код:
dt1 := to_date('01/'||to_char(dt, 'MM/YYYY'), 'DD/MM/YYYY') - 1;
dt_res := to_date('01/'||to_char(dt1, 'MM/YYYY'), 'DD/MM/YYYY');


А вывести-то - куда?
wolfio
Участник - экстремал


Вступление в Клуб: 22.10.2012
СообщениеСр Фев 27, 2013 07:16    Ответить с цитатой
Полезность: Нет оценки
да для примера хоть в dbms.output
хм.. спс

а lastday как получить, раз уж заговорили?
Random
Эксперт


Вступление в Клуб: 27.06.2011
СообщениеСр Фев 27, 2013 07:18    Ответить с цитатой
Полезность: 2
lexus пишет:
кхм... lastday помню, firstday не помню Laughing
кто проще предложит?

Код:
dt1 := to_date('01/'||to_char(dt, 'MM/YYYY'), 'DD/MM/YYYY') - 1;
dt_res := to_date('01/'||to_char(dt1, 'MM/YYYY'), 'DD/MM/YYYY');


А вывести-то - куда?


Код:
select trunc(add_months(sysdate, -1), 'mm') from dual;
select last_day(add_months(sysdate, -1)) from dual;
begin dbms_OUTPUT.put_line(to_char(sysdate,'ddmmyyyy'));end;


Последний раз редактировалось: Random (Ср Фев 27, 2013 07:20), всего редактировалось 1 раз
Amper
Профи


Вступление в Клуб: 29.10.2010
СообщениеСр Фев 27, 2013 07:20    Ответить с цитатой
Полезность: Нет оценки
Код:
to_char(trunc(SYSDATE, 'MONTH'), 'ddmmyyyy')

вместо SYSDATE подставить необходимую дату
Alexsey
Эксперт


Вступление в Клуб: 06.09.2007
СообщениеСр Фев 27, 2013 09:03    Ответить с цитатой
Полезность: Нет оценки
В библиотеке DATEFUN есть набор функций:

Код:
-- первый день месяца - календарный
function bom(CurDate date) return date;
PRAGMA RESTRICT_REFERENCES ( bom, WNDS, WNPS );
-- первый день месяца - рабочий
function bom_work(CurDate date) return date;

-- последний день месяца - календарный
function eom(CurDate date) return date;
PRAGMA RESTRICT_REFERENCES ( eom, WNDS, WNPS );
-- последний день месяца - рабочий
function eom_work(CurDate date) return date;


-- первый день квартала - календарный
function boq(CurDate date) return date;
PRAGMA RESTRICT_REFERENCES ( boq, WNDS, WNPS );
-- первый день квартала - рабочий
function boq_work(CurDate date) return date;


-- последний день квартала - календарный
function eoq(CurDate date) return date;
PRAGMA RESTRICT_REFERENCES ( eoq, WNDS, WNPS );
-- последний день квартала - рабочий
function eoq_work(CurDate date) return date;

-- первый день года - календарный
function boy(CurDate date) return date;
PRAGMA RESTRICT_REFERENCES ( boy, WNDS, WNPS );
-- первый день года - рабочий
function boy_work(CurDate date) return date;

-- последний день года - календарный
function eoy(CurDate date) return date;
PRAGMA RESTRICT_REFERENCES ( eoy, WNDS, WNPS );
-- последний день года - рабочий
function eoy_work(CurDate date) return date;



_________________
всегда есть как минимум 2 выхода
wolfio
Участник - экстремал


Вступление в Клуб: 22.10.2012
СообщениеСр Фев 27, 2013 09:13    Ответить с цитатой
Полезность: Нет оценки
к сожалению в РБО такой библиотеки нет Sad
yaffil
Профи


Вступление в Клуб: 18.08.2011
СообщениеСр Фев 27, 2013 09:29    Ответить с цитатой
Полезность: 3
Ну или вот так:

with t as (select trunc(sysdate) d from dual)
--
select 'ГОД - первый день' descr,trunc(d,'YY') new_date from t
union all
select 'ГОД - последний день', add_months(trunc(d,'YY'),12)-1 from t
union all
select 'КВАРТАЛ - первый день', trunc(d,'Q') from t
union all
select 'КВАРТАЛ - последний день', trunc(add_months(d, 3), 'Q')-1 from t
union all
select 'МЕСЯЦ - первый день' ,trunc(d,'MM') from t
union all
-- LAST_DAY не изменяет время
select 'МЕСЯЦ - последний день',last_day(d) from t
union all
-- какой день недели считается первым, зависит от параметра NLS_TERRITORY
select 'НЕДЕЛЯ - первый день', trunc(d,'D') from t
union all
select 'НЕДЕЛЯ - последний день', trunc(d,'D')+6 from t

DESCR NEW_DATE
------------------------ -----------
ГОД - первый день 01.01.2013
ГОД - последний день 31.12.2013
КВАРТАЛ - первый день 01.01.2013
КВАРТАЛ - последний день 31.03.2013
МЕСЯЦ - первый день 01.02.2013
МЕСЯЦ - последний день 28.02.2013
НЕДЕЛЯ - первый день 25.02.2013
НЕДЕЛЯ - последний день 03.03.2013
Показать сообщения:   
Ответить на тему    Клуб специалистов ЦФТ-Банк (IBSO) -> Справочник PL/PLUS: Функции, примеры, приёмы Часовой пояс: GMT + 3
Страница 1 из 1

 
Перейти:  
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Рейтинг@Mail.ru