일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
- 화면보호기 실행 방지
- 트리거 이벤트
- 뒤로가기 방지
- eclipse 폰트
- eclipse 다국어
- 여러줄 한줄로
- 시퀀스 초기화 프로시져
- Spring Annotation
- 폴더만 남기고 파일만 삭제
- 엑셀 UPDATE
- javascript 낙타
- DIV 팝업 이외 영역 클릭 시 팝업 닫기
- i_tail
- JSP Standard Tag Library (JSTL) Tutorial
- jquery_cheat_sheet #jquery_quick_api_reference
- 전화번호 형식 자동 변환
- ajax 배열 파라미터
- 팝업 종료
- css 말줄임
- 근무날짜 경력계산
- ajax 배열
- jquery_api #jquery #api
- taglib 만들기
- 스킵 네비게이션
- 탭과 클릭 focus 이벤트 구분
- javascript Camel
- jQuery 백스페이스
- #오라클 데이터 복구
- 허드슨 포트 변경
- eclipse properties
- Today
- Total
Hi~ Summers!!
오라클 날짜계산 본문
** 날짜계산
-- '2011-01-20' 과 당일 사이의 달의 수를 NUMBER형 타입으로 반환
-- MONTHS_BETWEEN(A,B) = A-B/30
SELECT MONTHS_BETWEEN(SYSDATE,TO_DATE('2011-01-20','YYYY-MM-DD')) FROM DUAL;
-- 특정일의 달수 더한 날
SELECT ADD_MONTHS(SYSDATE, 10) FROM DUAL;
-- 특정일의 다음주 요일
SELECT NEXT_DAY(SYSDATE,'FRIDAY') FROM DUAL;
-- 특정일의 해당 월의 마지막 날
SELECT LAST_DAY(SYSDATE) FROM DUAL;
-- 특정일의 반올림(오후면 다음날..)
SELECT ROUND(SYSDATE,'DD') FROM DUAL;
-- 특정일의 전주 토요일(해당 전주의 마지막 날)에해당하는 날짜
SELECT TRUNC(SYSDATE,'WW') 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
/* 다음주 */ 날짜칼럼
BETWEEN TRUNC(SYSDATE + 8) - 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
/* 전월 */ 날짜칼럼
BETWEEN TRUNC(ADD_MONTHS(SYSDATE, -1) + 1) - TO_CHAR(SYSDATE,'DD') 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)
** 특정일 까지의 간격을 년, 개월, 일로 표현하기
SELECT
TRUNC(MONTHS_BETWEEN(SYSDATE, TO_DATE('20000101', 'YYYYMMDD'))/12) "년",
TRUNC(MONTHS_BETWEEN(SYSDATE, TO_DATE('20000101', 'YYYYMMDD')) -
TRUNC(MONTHS_BETWEEN(SYSDATE, TO_DATE('20000101', 'YYYYMMDD'))/12) * 12) "개월",
TRUNC((MONTHS_BETWEEN(SYSDATE,TO_DATE('20000101', 'YYYYMMDD')) -
TRUNC(MONTHS_BETWEEN(SYSDATE, TO_DATE('20000101', 'YYYYMMDD')))) * 30.5) "일"
FROM DUAL;
** 당월의 주차 구하기..
SELECT
'20000101' AS "날짜", CEIL((TO_NUMBER(SUBSTRB('20000101', -2, 2)) + 7 - TO_NUMBER(TO_CHAR(TO_DATE('20000101', 'YYYYMMDD'), 'D'))) / 7) AS "월별 주차"
FROM DUAL;
** 시간 계산 SQL
SELECT TRUNC(TO_DATE('20110101012345', 'YYYYMMDDHH24MISS') - TO_DATE('20110501213344', 'YYYYMMDDHH24MISS')) || ' DAY ' ||
TRUNC(MOD((TO_DATE('20110101012345', 'YYYYMMDDHH24MISS') - TO_DATE('20110501213344', 'YYYYMMDDHH24MISS')), 1) * 24)|| ' HOUR ' ||
TRUNC(MOD((TO_DATE('20110101012345', 'YYYYMMDDHH24MISS') - TO_DATE('20110501213344', 'YYYYMMDDHH24MISS')) * 24, 1) * 60)|| ' MINUTE ' ||
TRUNC(ROUND(MOD((TO_DATE('20110101012345', 'YYYYMMDDHH24MISS') - TO_DATE('20110501213344', 'YYYYMMDDHH24MISS')) * 24 * 60, 1) * 60))|| ' SEC '
" TIME INTERVAL "
FROM DUAL ;