문형 | 사용 예 | |
---|---|---|
문형 | 결과 | |
SYSDATE | SYSDATE | 99/05/10 |
SYSTIMESTAMP | SYSTIMESTAMP | 07/03/07 10:55:24.260425 +09:00 |
LAST_DAY(날짜값) | LAST_DAY('98/02/17') | 98/02/28 |
NEXT_DAY(날짜값, 요일 문자) | NEXT_DAY('98/02/17','FRIDAY') | 98/02/20 |
MONTHS_BETWEEN (날짜값1,날짜값2) | MONTHS_BETWEEN('97/04/26','95/06/22') | 21.1290323 |
ADD_MONTHS(날짜값, 숫자값) | ADD_MONTHS('95/06/22',21) | 97/04/22 |
ROUND(날짜값, 자리수) | 현재 날짜가 1999년 5월 10일이라 가정하자. ROUND(SYSDATE,'MONTH') | 99/05/01 |
TRUNC(날짜값, 자리수) | 현재 날짜가 1999년 5월 10일이라 가정하자. TRUNC(SYSDATE,'YEAR') | 99/01/01 |
EXTRACT(날짜 및 시각 FROM 날짜값) | 현재 날짜가 1999년 5월 10일이라 가정하자. EXTRACT ( YEAR FROM SYSDATE ) | 1999 |
TO_YMINTERVAL(문자값) | 현재 날짜가 1999년 5월 10일이라 가정하자. SYSDATE + TO_YMINTERVAL('01-02') | 00/07/10 |
SQL> select to_char(sysdate,'YYYY-MM-DD HH24:MI:SS') from dual;
연산 | 결과치 | 사용목적 |
---|---|---|
날짜 + 숫자 | 날짜 | 특정한 날로부터 몇일 후의 날짜 계산 |
날짜 - 숫자 | 날짜 | 특정한 날로부터 몇일 전의 날짜 계산 |
날짜 - 날짜 | 숫자 | 두 날짜사이의 차이를 숫자로 계산 |
날짜 + 숫자/24 | 날짜 | 날짜에 몇 시간 후를 계산 |
형식 | 설명 |
---|---|
yy | 년도를 2자리로 |
yyyy | 년도를 4자리로 |
year | 영어 철자로 표시 |
mm | 월을 표시(01-12) |
mon | 월을 표시(DEC….):약자로 나온다. |
month | 월을 표시(1월,2월,….혹은 ,DECEMBER) |
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 “근무년수” Format a 14; |
SQL> select months_between(sysdate,to_date('2006-12-22','yyyy-mm-dd')) from dual;
SQL> select add_months(sysdate,4) from dual;
SQL> select next_day(sysdate,'friday') from dual;
SQL> select last_day(sysdate) from dual;
SQL> select round(sysdate,'dd') from dual;
SQL> select trunc(sysdate,'ww') from dual;
SQL> select trunc(sysdate,'D') from dual;
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('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 TO_CHAR(SYSDATE,'YYYYMMDD') AS "날짜" ,CEIL((TO_NUMBER(SUBSTRB(TO_CHAR(SYSDATE,'YYYYMMDD'), -2, 2)) + 7 - TO_NUMBER(TO_CHAR(TO_DATE(TO_CHAR(SYSDATE,'YYYYMMDD'),'YYYYMMDD'),'D')))/7) AS "월별 주차" FROM DUAL;
select rownum ,to_char(to_date('2015-12-31','YYYY-MM-DD')+rownum,'YYYY-MM-DD') as ymd ,TO_NUMBER(TO_CHAR(TO_DATE(TO_CHAR(to_date('2015-12-31','YYYY-MM-DD')+rownum,'YYYYMMDD'),'YYYYMMDD'),'D')) as t1 ,TO_CHAR(to_date('2015-12-31','YYYY-MM-DD')+rownum,'WW') as "한해의 주차 1" ,TO_CHAR(to_date('2015-12-31','YYYY-MM-DD')+rownum,'IW') as "한해의 주차 2" ,TO_CHAR(to_date('2015-12-31','YYYY-MM-DD')+rownum,'W') AS "월별 주차" from all_tables where rownum < 367;
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 ;