문서의 선택한 두 판 사이의 차이를 보여줍니다.
다음 판 | 이전 판 마지막 판 양쪽 다음 판 | ||
dbms:oracle:devel:oracledatefunction [2007/03/07 11:05] starlits 새로 만듬 |
dbms:oracle:devel:oracledatefunction [2009/07/28 13:54] starlits |
||
---|---|---|---|
줄 8: | 줄 8: | ||
| SYSTIMESTAMP | SYSTIMESTAMP | 07/03/07 10: | | SYSTIMESTAMP | SYSTIMESTAMP | 07/03/07 10: | ||
| LAST_DAY(날짜값) | LAST_DAY(' | | LAST_DAY(날짜값) | LAST_DAY(' | ||
- | | NEXT_DAY(날짜값, | + | | [[dbms: |
| MONTHS_BETWEEN (날짜값1, | | MONTHS_BETWEEN (날짜값1, | ||
| ADD_MONTHS(날짜값, | | ADD_MONTHS(날짜값, | ||
줄 19: | 줄 19: | ||
SQL> select to_char(sysdate,' | SQL> select to_char(sysdate,' | ||
</ | </ | ||
- | * Oracle10g 부터는 SYSDATE 대신 SYSTIMESTAMP 함수를 이용하면 좀 더 자세히 볼 수 있다. | + | * Oracle10g 부터는 SYSDATE 대신 SYSTIMESTAMP 함수(Database의 TimeZone을 포함한 시스템 날짜)를 이용하면 좀 더 자세히 볼 수 있다. |
* MONTHS_BETWEEN 함수를 쓰는 경우는 큰 날짜를 앞에 써야 양수로 계산됩니다. | * MONTHS_BETWEEN 함수를 쓰는 경우는 큰 날짜를 앞에 써야 양수로 계산됩니다. | ||
+ | * NEXT_DAY는 입력한 날짜값(DATE) 다음 주의 요일날짜를 보여줍니다. \\ 요일문자는 LANG 설정에 따라 (월요일..일요일)도 가능하나 MONDAY, | ||
===== 날짜에 대한 산술 연산 ===== | ===== 날짜에 대한 산술 연산 ===== | ||
줄 35: | 줄 36: | ||
* 년(Year), 주(Week), 일(Day)등은 따로 제공되는 함수가 없습니다. \\ 이런 경우에 년차나 특정날짜로부터 며칠 후의 날짜값 등을 계산하고 싶으면 바로 날짜값에 산술연산을 함으로써 가능합니다. | * 년(Year), 주(Week), 일(Day)등은 따로 제공되는 함수가 없습니다. \\ 이런 경우에 년차나 특정날짜로부터 며칠 후의 날짜값 등을 계산하고 싶으면 바로 날짜값에 산술연산을 함으로써 가능합니다. | ||
+ | |||
+ | ===== 날짜함수에서 사용할 수 있는 포멧 ===== | ||
+ | ^ 형식 ^ 설명 ^ | ||
+ | | yy | 년도를 2자리로 | | ||
+ | | yyyy | 년도를 4자리로 | | ||
+ | | year | 영어 철자로 표시 | | ||
+ | | mm | 월을 표시(01-12) | | ||
+ | | mon | 월을 표시(DEC....): | ||
+ | | month | 월을 표시(1월, | ||
+ | | d | 일을 표시(주에 대한 일) | | ||
+ | | dd | 일을 표시 (월에 대한 일) | | ||
+ | | ddd | 일을 표시 (년에 대한 일) | | ||
+ | | Q | 분기를 구한다. | | ||
+ | | DAY | 요일 (월요일) | | ||
+ | | DY | 요일(월) | | ||
+ | | HH & HH12 | 시간을 12시간제로 | | ||
+ | | HH24 | 24시간제로 | | ||
+ | | MI | 분 | | ||
+ | | SS | 초 | | ||
+ | | AM & PM & A.M & P.M | 12시간제 일때 오전 오후를 표시 | | ||
+ | |||
+ | ===== 접미사로 사용하는 포맷 ===== | ||
+ | ^ 형식 ^ 설명 ^ 예시 ^ | ||
+ | | TH | 서수로 표시 | 4 -> DD ->4 \\ 4-> DDTH -> 4TH | | ||
+ | | SP | 철자로 표시 | 4 ->DDSP -> FOUR | | ||
+ | | SPTH & THSP | |4 -> DDSPTH -> FOURTH | | ||
+ | | | 근무한 년월 수 | column " | ||
+ | |||
+ | |||
+ | ===== 날짜계산 ===== | ||
+ | |||
+ | ==== 날짜구하기 ==== | ||
+ | |||
+ | |||
+ | - 특정일(2006-12-22)과 현재 날짜까지의 달의 차이 수(NUMBER 타입으로 변환) < | ||
+ | SQL> select months_between(sysdate, | ||
+ | </ | ||
+ | * months_between(A, | ||
+ | - 특정일(SYSDATE)에 달수(4)를 더한 날 < | ||
+ | SQL> select add_months(sysdate, | ||
+ | </ | ||
+ | - 특정일(SYSDATE)의 다음주 요일(friday) < | ||
+ | SQL> select next_day(sysdate,' | ||
+ | </ | ||
+ | - 특정일(SYSDATE)의 해당 월의 마지막 날 < | ||
+ | SQL> select last_day(sysdate) from dual; | ||
+ | </ | ||
+ | - 특정일의 반올림(오후면 다음날..) < | ||
+ | SQL> select round(sysdate,' | ||
+ | </ | ||
+ | - 특정일의 전주 토요일(해당 전주의 마지막 날)에해당하는 날짜 < | ||
+ | SQL> select trunc(sysdate,' | ||
+ | </ | ||
+ | - 특정일의 주 일요일(해당 주의 첫째 날)에해당하는 날짜 < | ||
+ | SQL> select trunc(sysdate,' | ||
+ | </ | ||
+ | |||
+ | ==== 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,' | ||
+ | AND TRUNC(SYSDATE+1)-TO_CHAR(SYSDATE,' | ||
+ | </ | ||
+ | - **차주** 날짜칼럼 < | ||
+ | BETWEEN TRUNC(SYSDATE+8)-TO_CHAR(SYSDATE, | ||
+ | AND TRUNC(TRUNC(SYSDATE)+14.99999421)-TO_CHAR(SYSDATE, | ||
+ | </ | ||
+ | - **금월** 날짜칼럼 < | ||
+ | BETWEEN TRUNC(SYSDATE+1)-TO_CHAR(SYSDATE,' | ||
+ | AND TRUNC(LAST_DAY(SYSDATE))+0.99999421 | ||
+ | </ | ||
+ | - **전월** 날짜칼럼 < | ||
+ | BETWEEN TRUNC(ADD_MONTHS(SYSDATE, | ||
+ | AND TRUNC(LAST_DAY(ADD_MONTHS(SYSDATE, | ||
+ | </ | ||
+ | - **차월** 날짜칼럼 < | ||
+ | BETWEEN ADD_MONTHS(TRUNC(SYSDATE), | ||
+ | AND LAST_DAY(ADD_MONTHS(TRUNC(SYSDATE), | ||
+ | </ | ||
+ | |||
+ | |||
+ | ==== 특정일 까지 간격 ==== | ||
+ | |||
+ | * 특정일 까지의 간격을 년, 개월, 일로 표현하기 < | ||
+ | SELECT | ||
+ | TRUNC(MONTHS_BETWEEN(SYSDATE, | ||
+ | TRUNC(MONTHS_BETWEEN(SYSDATE, | ||
+ | TRUNC(MONTHS_BETWEEN(SYSDATE, | ||
+ | TRUNC((MONTHS_BETWEEN(SYSDATE, | ||
+ | TRUNC(MONTHS_BETWEEN(SYSDATE, | ||
+ | FROM DUAL; | ||
+ | </ | ||
+ | |||
+ | ==== 당월의 주차 ==== | ||
+ | * 당월의 주차 구하기 < | ||
+ | SELECT | ||
+ | TO_CHAR(SYSDATE,' | ||
+ | , | ||
+ | FROM DUAL; | ||
+ | </ | ||
+ | * TO_CHAR(SYSDATE,' | ||
+ | |||
+ | |||
+ | ==== 시간 계산 SQL ==== | ||
+ | < | ||
+ | SELECT TRUNC(TO_DATE(' | ||
+ | | ||
+ | | ||
+ | | ||
+ | " | ||
+ | FROM DUAL ; | ||
+ | </ |