2009. 3. 13. 20:19 Program.../Oracle
Oracle 날짜형 함수
---- 날짜연산
select sysdate, sysdate + 1, sysdate + 1/24, sysdate + 1/(24*60*60)
from dual;
select '2007-02-14' - '2007-02-12' -- 이러한 형식은 문자로 인식하기 때문에 실행이 안된다.
from dual;
select to_date('2007-02-14','yyyy-mm-dd') - -- to_date('입력값','x') : 해당값은 X라는 형식의 날짜라고 표시한다.
to_date('2007-02-12','yyyy-mm-dd')
from dual;
---- months_between 함수 :
select months_between('2007-2-12','2007-01-01') -- 문자 형식이라도 잠정적으로 날짜로 인식한다.
-- months_between(a,b): a와b의 차이를 달(month)수로 나타낸다.
from dual;
---- add_months 함수
select add_months(sysdate, 1) -- add_months(a,b) : a날짜로부터 b달만큼 더한다.
from dual;
----------- 예제문제 : 지금부터 1달 2일 3시간 4분 5초후는?
select sysdate, add_months(sysdate,1) + 2 + 3/24 + 5/(24*60*60)
from dual; -- oracle 8i 까지 써왔던 함수.
----------- 예제문제 : 지금부터 1년 1달 2일 3시간 4분 5초후는?
select sysdate, sysdate + to_yminterval('01-01') + to_dsinterval('002 03:04:05')
from dual; -- oracle 9i 부터 나온 시간계산함수
---- next_day 함수 : next_day(날짜,'요일') - 해당날짜에서 가장빨리 돌아오는 요일을 나타낸다.
select next_day(sysdate,'금'), -- 리눅스,유닉스 기반에서는 요일이 한글이 아닌 영어라 안될수 있다.
next_day(sysdate,'월'),
next_day(sysdate,'토요일'),
next_day(sysdate,'화요일')
from dual;
select to_char(sysdate,'day'), to_char(sysdate,'dy') -- 해당함수는 날짜에대한 요일을 알려준다.
from dual; -- 유닉스나 리눅스는 한글이 아닌 영어로 나타난다.
select to_char(sysdate, 'd')
from dual;
------ 1, 2, 3, 4, 5, 6, 7
------ 월 화 수 목 금 토 일 로 매핑이 된다.
---- 미리배워보는 (case, when, then, end) 문
select case 3-1 -- oracle 8i부터 생성된 함수
when 1 then '3-1=1 입니다.'
when 2 then '3-2=1 입니다.'
else '3-1=몰라요'
end
from dual;
select case
when 3 > 4 then '3 > 4 입니다.'
when 3 > 2 then '3 > 2 입니다.'
else '몰라요'
end
from dual;
select decode(3-1, 1, '3-1=1 ok', 2, '3-1=2 ok', '3-1= I don`t know')
from dual; -- 오라클 8i 이전에 사용하던 함수
----------------------------------------------------------------------------------------
---- case~ 함수
select case to_char(sysdate, 'd')
when '1' then '일요일'
when '2' then '월요일'
when '3' then '화요일'
when '4' then '수요일'
when '5' then '목요일'
when '6' then '금요일'
when '7' then '토요일'
end "오늘의 요일명"
from dual;
select decode(to_char(sysdate, 'd')
,'1','일요일'
,'2','월요일'
,'3','화요일'
,'4','수요일'
,'5','목요일'
,'6','금요일'
,'7','토요일') "오늘의 요일명"
from dual;
---- last_day 함수 : 해당 날짜에 맨 마지막 날을 표시한다.
select last_day(sysdate)
from dual;
'Program... > Oracle' 카테고리의 다른 글
Oracle rank 함수 (0) | 2009.03.13 |
---|---|
Oracle 변환형 함수 (0) | 2009.03.13 |
Oracle 숫자형 함수 - log, sign, chr (0) | 2009.03.13 |
Oracle 숫자형 함수 - mod, floor, power, sqrt (0) | 2009.03.13 |
Oracle 숫자형 함수 - round, trunc (0) | 2009.03.13 |