# 날짜계산
select months_between(sysdate,to_date('2006-12-22','yyyy-mm-dd')) from dual;
select months_between(sysdate,to_date('2006-12-22','yyyy-mm-dd')) from dual;
-- '2006-12-22' 과 당일 사이의 달의 수를 NUMBER형 타입으로 반환
-- months_between(A,B) = A-B/30
select add_months(sysdate,4) from dual;
-- months_between(A,B) = A-B/30
select add_months(sysdate,4) from dual;
-- 특정일의 달수 더한 날
select next_day(sysdate,'friday') from dual;
select next_day(sysdate,'friday') from dual;
-- 특정일의 다음주 요일
select last_day(sysdate) from dual;
select last_day(sysdate) from dual;
-- 특정일의 해당 월의 마지막 날
select round(sysdate,'dd') from dual;
select round(sysdate,'dd') from dual;
-- 특정일의 반올림(오후면 다음날..)
select trunc(sysdate,'ww') from dual;
select trunc(sysdate,'ww') from dual;
-- 특정일의 전주 토요일(해당 전주의 마지막 날)에해당하는 날짜
select trunc(sysdate,'D') from dual;
select trunc(sysdate,'D') from dual;
-- 특정일의 주 일요일(해당 주의 첫째 날)에해당하는 날짜
where 조건에 날짜칼럼을 기준으로 함.
/* 어제 */ 날짜칼럼
/* 어제 */ 날짜칼럼
BETWEEN TRUNC(SYSDATE-1) AND TRUNC(SYSDATE-1)+0.99999421
/* 오늘 */ 날짜칼럼
/* 오늘 */ 날짜칼럼
BETWEEN TRUNC(SYSDATE) AND TRUNC(SYSDATE) + 0.99999421
/* 내일 */ 날짜칼럼
/* 내일 */ 날짜칼럼
BETWEEN TRUNC(SYSDATE+1) AND TRUNC(SYSDATE+1)+0.99999421
/* 금주 */ 날짜칼럼
/* 금주 */ 날짜칼럼
BETWEEN TRUNC(SYSDATE+1)-TO_CHAR(SYSDATE,'D')
AND TRUNC(SYSDATE+1)-TO_CHAR(SYSDATE,'D')+6.99999421
/* 차주 */ 날짜칼럼
AND TRUNC(SYSDATE+1)-TO_CHAR(SYSDATE,'D')+6.99999421
/* 차주 */ 날짜칼럼
BETWEEN TRUNC(SYSDATE+8)-TO_CHAR(SYSDATE, 'D')
AND TRUNC(TRUNC(SYSDATE)+14.99999421)-TO_CHAR(SYSDATE, 'D')
/* 금월 */ 날짜칼럼
AND TRUNC(TRUNC(SYSDATE)+14.99999421)-TO_CHAR(SYSDATE, 'D')
/* 금월 */ 날짜칼럼
BETWEEN TRUNC(SYSDATE+1)-TO_CHAR(SYSDATE,'DD')
AND TRUNC(LAST_DAY(SYSDATE))+0.99999421
/* 전월 */ 날짜칼럼
AND TRUNC(LAST_DAY(SYSDATE))+0.99999421
/* 전월 */ 날짜칼럼
BETWEEN TRUNC(ADD_MONTHS(SYSDATE,-1)+1)-TO_CHAR(SYSDATE,'DD')
AND TRUNC(LAST_DAY(ADD_MONTHS(SYSDATE, -1)))+0.99999421
/* 차월 */ 날짜칼럼
AND TRUNC(LAST_DAY(ADD_MONTHS(SYSDATE, -1)))+0.99999421
/* 차월 */ 날짜칼럼
BETWEEN ADD_MONTHS(TRUNC(SYSDATE),1)-TO_CHAR(SYSDATE,'DD')+1
AND LAST_DAY(ADD_MONTHS(TRUNC(SYSDATE),1)+0.99999421)
AND LAST_DAY(ADD_MONTHS(TRUNC(SYSDATE),1)+0.99999421)
# 특정일 까지의 간격을 년, 개월, 일로 표현하기
SELECT
TRUNC(MONTHS_BETWEEN(SYSDATE, TO_DATE('20060101', 'YYYYMMDD'))/12) "년",
TRUNC(MONTHS_BETWEEN(SYSDATE, TO_DATE('20060101', 'YYYYMMDD')) -
TRUNC(MONTHS_BETWEEN(SYSDATE, TO_DATE('20060101', 'YYYYMMDD'))/12) * 12) "개월",
TRUNC((MONTHS_BETWEEN(SYSDATE,TO_DATE('20060101', 'YYYYMMDD')) -
TRUNC(MONTHS_BETWEEN(SYSDATE, TO_DATE('20060101', 'YYYYMMDD')))) * 30.5) "일"
FROM DUAL;
TRUNC(MONTHS_BETWEEN(SYSDATE, TO_DATE('20060101', 'YYYYMMDD'))/12) "년",
TRUNC(MONTHS_BETWEEN(SYSDATE, TO_DATE('20060101', 'YYYYMMDD')) -
TRUNC(MONTHS_BETWEEN(SYSDATE, TO_DATE('20060101', 'YYYYMMDD'))/12) * 12) "개월",
TRUNC((MONTHS_BETWEEN(SYSDATE,TO_DATE('20060101', 'YYYYMMDD')) -
TRUNC(MONTHS_BETWEEN(SYSDATE, TO_DATE('20060101', 'YYYYMMDD')))) * 30.5) "일"
FROM DUAL;
# 당월의 주차 구하기..
SELECT
'20040511' as "날짜"
, ceil((to_number(substrb('20040511', -2, 2)) + 7 - to_number(TO_CHAR(TO_DATE('20040511','YYYYMMDD'),'D')))/7) as "월별 주차"
from dual;
# 시간 계산 SQL
SELECT TRUNC(TO_DATE('20060502223443','YYYYMMDDHH24MISS')-TO_DATE('20060501213344','YYYYMMDDHH24MISS')) || ' day ' ||
TRUNC(MOD((TO_DATE('20060502223443','YYYYMMDDHH24MISS')-TO_DATE('20060501213344','YYYYMMDDHH24MISS')),1)*24)|| ' hour ' ||
TRUNC(MOD((TO_DATE('20060502223443','YYYYMMDDHH24MISS')-TO_DATE('20060501213344','YYYYMMDDHH24MISS'))*24,1)*60)|| ' minute ' ||
TRUNC(ROUND(MOD((TO_DATE('20060502223443','YYYYMMDDHH24MISS')-TO_DATE('20060501213344','YYYYMMDDHH24MISS'))*24*60,1)*60))|| ' sec '
" Time Interval "
FROM DUAL ;
SELECT TRUNC(TO_DATE('20060502223443','YYYYMMDDHH24MISS')-TO_DATE('20060501213344','YYYYMMDDHH24MISS')) || ' day ' ||
TRUNC(MOD((TO_DATE('20060502223443','YYYYMMDDHH24MISS')-TO_DATE('20060501213344','YYYYMMDDHH24MISS')),1)*24)|| ' hour ' ||
TRUNC(MOD((TO_DATE('20060502223443','YYYYMMDDHH24MISS')-TO_DATE('20060501213344','YYYYMMDDHH24MISS'))*24,1)*60)|| ' minute ' ||
TRUNC(ROUND(MOD((TO_DATE('20060502223443','YYYYMMDDHH24MISS')-TO_DATE('20060501213344','YYYYMMDDHH24MISS'))*24*60,1)*60))|| ' sec '
" Time Interval "
FROM DUAL ;
[출처] 날짜 계산하는 오라클 함수 Oracle|작성자 은시기
'ETC' 카테고리의 다른 글
티스토리 단축키를 아시나요? (1) | 2009.03.05 |
---|---|
미래4년고난.. (1) | 2009.02.28 |
아실만한 분은 모두 안다는 사진을 재미있게 합성해주는 사이트 한군데 소개. (2) | 2009.02.20 |
역광촬영 기법 (0) | 2008.02.05 |
패닝촬영 기법 (0) | 2008.02.05 |