Архив

Публикации с меткой ‘trunc’

Даты в oracle — получить первый/последний день

6 Ноябрь 2012 1 комментарий
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
Categories: SQL Tags: , , , ,