[ 주(Week)구하기 ] : ① ~ ⑤까지 차례대로 해본다
① 요일번호(1:일요일~7:토요일)
SELECT TO_NUMBER(TO_CHAR(TO_DATE(ATTN_DATE,'YYYYMMDD'),'D'))
FROM EMPLOYEE_ATTEND
WHERE ATTN_DATE LIKE '200612%'
AND SNO='76990101'
② 날짜+7
SELECT TO_NUMBER(TO_CHAR(TO_DATE(ATTN_DATE,'YYYYMMDD'),'DD'))+7
FROM EMPLOYEE_ATTEND
WHERE ATTN_DATE LIKE '200612%'
AND SNO='76990101'
③ (날짜+7)-요일번호
SELECT TO_NUMBER(TO_CHAR(TO_DATE(ATTN_DATE,'YYYYMMDD'),'DD'))+7-TO_NUMBER(TO_CHAR(TO_DATE(ATTN_DATE,'YYYYMMDD'),'D'))
FROM EMPLOYEE_ATTEND
WHERE ATTN_DATE LIKE '200612%'
AND SNO='76990101'
④ ((날짜+7)-요일번호)/7
SELECT (TO_NUMBER(TO_CHAR(TO_DATE(ATTN_DATE,'YYYYMMDD'),'DD'))+7-TO_NUMBER(TO_CHAR(TO_DATE(ATTN_DATE,'YYYYMMDD'),'D')))/7
FROM EMPLOYEE_ATTEND
WHERE ATTN_DATE LIKE '200612%'
AND SNO='76990101'
⑤ TRUNC(((날짜+7)-요일번호)/7)
SELECT TRUNC((TO_NUMBER(TO_CHAR(TO_DATE(ATTN_DATE,'YYYYMMDD'),'DD'))+7-TO_NUMBER(TO_CHAR(TO_DATE(ATTN_DATE,'YYYYMMDD'),'D')))/7)
FROM EMPLOYEE_ATTEND
WHERE ATTN_DATE LIKE '200612%'
AND SNO='76990101'
→ 해당 날짜가 몇째주인지 반환(첫째주:0~)
날짜 계산하는 오라클 함수 Oracle
# 날짜계산 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_mon..
softone.tistory.com
'Oracle DB' 카테고리의 다른 글
MS VISUAL STUDIO 단축키 (MSSQL) (0) | 2020.08.12 |
---|---|
Oracle 무료 데이터베이스 Oracle Xe 2020년 기준 (0) | 2020.08.12 |
Oracle Instant Client 설치 아무리 해도 안될 때 (0) | 2019.10.03 |
Oracle to MySQL Migration (0) | 2018.12.28 |
Oracle and MySQL Compared (0) | 2018.12.28 |