Предыдущая тема :: Следующая тема |
Автор |
Сообщение |
wolfio Участник - экстремал
Вступление в Клуб: 22.10.2012
|
Ср Фев 27, 2013 06:31  получение даты |
|
Полезность: Нет оценки
|
уважаемые знатоки, пожалуйста подскажите, каким способом можно найти 1ое число предыдущего месяца? и вывести эту дату в формате ddmmyyyy. возвращаемый тип данных должен быть датой. |
|
 |
lexus Профи
Вступление в Клуб: 28.09.2007
|
Ср Фев 27, 2013 06:59   |
|
Полезность: 1
|
кхм... lastday помню, firstday не помню
кто проще предложит?
Код: | 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 не помню
кто проще предложит?
Код: | 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   |
|
Полезность: Нет оценки
|
к сожалению в РБО такой библиотеки нет  |
|
 |
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 |
|
 |
|
|
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете голосовать в опросах
|
|