Главная
>
SQL > Даты в oracle — получить первый/последний день
Даты в oracle — получить первый/последний день
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.2012
ГОД - последний день 31.12.2012
КВАРТАЛ - первый день 01.10.2012
КВАРТАЛ - последний день 31.12.2012
МЕСЯЦ - первый день 01.11.2012
МЕСЯЦ - последний день 30.11.2012
НЕДЕЛЯ - первый день 05.11.2012
НЕДЕЛЯ - последний день 11.11.2012
8 rows selected
SQL> select (sysdate-trunc(sysdate-1)) day to second + time '00:00:00' as diff_time from dual;
DIFF_TIME
---------
15:32:2
Похожие записи:
Спасибо за инфу, четко и только то что нужно!