기본날짜형식 'DD-MON-YY'
단일 인용부호('')사용 필요
DBMS에서 현재날짜중 년도와 월만 가져오기
SELECT TO_CHAR(SYSDATE, 'YYYY-MM-DD') AS APPLDAT,
TO_CHAR(SYSDATE, 'YYYYMM') AS YRMM FROM dual
DBMS에서 현재날짜중 년도와 월만 가져오기
SELECT to_char(system, 'yyyymm')
FROM daul
DBMS에서 현재날짜 가져오기
SELECT system
FROM daul
오라클 날짜데이터에서 요일가져오기
select decode(to_char(to_date('20040405','yyyymmdd'),'d'), '1','일요일', '2','월요일', '3','화요일', '4','수요일', '5','목요일', '6','금요일','토요일') "요일" from dual;
오라클에서 날짜데이터 형식 변환
19990212 => 1999/02/12
select to_char(to_date('19990212', 'YYYYMMDD'), 'YYYY/MM/DD') from TEST;
# 날짜계산 select months_between(sysdate,to_date(2009-12-22','yyyy-mm-dd')) -- months_between(A,B) = A-B/30 --select add_months(sysdate,4) -- 특정일의 달수 더한 날 --select next_day(sysdate,'friday') -- 특정일의 다음주 요일 --select last_day(sysdate) -- 특정일의 해당 월의 마지막 날 --select round(sysdate,'dd') -- 특정일의 반올림(오후면 다음날..) --select trunc(sysdate,'ww') -- 특정일의 전주 토요일(해당 전주의 마지막 날)에해당하는 날짜 --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(?', 'YYYYMMDD'))/12) "년", TRUNC(MONTHS_BETWEEN(SYSDATE, TO_DATE(?', 'YYYYMMDD')) - TRUNC(MONTHS_BETWEEN(SYSDATE, TO_DATE(?', 'YYYYMMDD'))/12) * 12) "개월", TRUNC((MONTHS_BETWEEN(SYSDATE,TO_DATE(?', 'YYYYMMDD')) - TRUNC(MONTHS_BETWEEN(SYSDATE, TO_DATE(?', 'YYYYMMDD')))) * 30.5) "일" FROM DUAL;
# 당월의 주차 구하기.. SELECT ?' as "날짜" , ceil((to_number(substrb(?', -2, 2)) + 7 - to_number(TO_CHAR(TO_DATE(?','YYYYMMDD'),'D')))/7) as "월별 주차" from dual;
# 시간 계산 SQL SELECT TRUNC(TO_DATE(?','YYYYMMDDHH24MISS')-TO_DATE(?','YYYYMMDDHH24MISS')) || ' day ' || TRUNC(MOD((TO_DATE(?','YYYYMMDDHH24MISS')-TO_DATE(?','YYYYMMDDHH24MISS')),1)*24) || ' hour ' || TRUNC(MOD((TO_DATE(?','YYYYMMDDHH24MISS')-TO_DATE(?','YYYYMMDDHH24MISS'))*24,1)*60) || ' minute ' || TRUNC(ROUND(MOD((TO_DATE(?','YYYYMMDDHH24MISS')-TO_DATE(?','YYYYMMDDHH24MISS'))*24*60,1)*60)) || ' sec ' " Time Interval " FROM DUAL ; |
민준이
2009/03/09 16:51
2009/03/09 16:51