'extract'에 해당하는 글 1건

- sysdate
  현재 시스템 시각을 보여줌. (=current_date)

- to_char
  숫자 및 날짜 타입을 문자로 변환시켜주는 함수.
 

select to_char(sysdate, 'yyyy-mm-dd hh24:mi:ss')
from dual;

 

 - to_char(sysdate, '[X]') *목요일인경우
          X = day   : 목요일 로 출력
          X = dy    : 목   으로 출력
          X = d     : 5      로 출력(1~7까지로 일~토 별로 대입. 예로 3인경우 화요일)
          X = ddd   : 현재 년도의 1월 1일로 가서 오늘의 날짜까지 총 몇일째인지 출력
          X = dd    : 현재의 월의 1일로 이동해서 현재의 날짜까지 총 몇일째인지 출력. 즉, 현재의 일자.
          X = sssss : 현재 일자가 시작된 0시0분0초부터 현재까지 총 몇초째인지 초단위로 출력.
          X = year  : 년도만 (=yyyy와 동일)
          X = month : 월만   (=mm과 동일)
          X = hh    : 시간
          X = mi    : 분
          X = ss    : 초
          X = q     : 올해 4분기중 현재 속하는 분기를 출력.

※ hh24에서 24시간제로 표시하는 것을 am 혹은 pm으로 변경할 수 있음
※ 날짜는 -으로 구분, 시간은 :으로 구분.

 

 - to_char(123.456, 9999.99)
          123.456을 정수4자리 와 소수점이하2자리로 표현하라 라는 의미.
          9999.99앞에 통화기호를 쓰면 결과에 포함되며, 통화기호를 L로 기재하면 운영체제등을 기반으로 소속국가의 통화량으로 표기.
         

- extract
  날짜 데이터에서 날짜를 숫자타입으로 뽑을때 사용.
  * extract(year from sysdate)
  * extract(month from sysdate)
  * extract(day from sysdate)

 

select extract(year from sysdate), extract(month from sysdate), extract(day from sysdate)
from dual;

 

- to_number
  문자타입을 숫자로 변환시켜주는 함수.

 

select '000001', to_number('00001')
from dual;

 


- to_date
  문자타입을 날짜타입으로 변환시켜주는 함수.

 

select sysdate + 1, sysdate - 1
from dual;

※ 날짜데이터에 +1 이나 -1을 입력하면 하루로 계산되어 결과데이터(날짜)가 출력됨
※ 현재날짜는 sysdate로 처리하면 날짜타입이므로 +나 -로 처리가능하나,
   임의날짜를 입력하면 문자형태로 입력되기 때문에 to_date로 처리하여 날짜타입으로 변경하여 처리해야함.

 

- add_months(임의의날짜, [X])
  임의의 날짜로 부터 X개월 만큼 추가

 

select add_months(sysdate, 1), sysdate, add_months(sysdate, -1)
from dual;

 

  ex: 현재로 부터 1년 2개월 3일 4시간 5분 6초 뒤를 출력

select to_char(sysdate, 'yyyy-mm-dd hh24:mm:ss'),
       to_char(add_months(sysdate, 12*1+2) + 3 + 4/24 + 5/(24*60) + 6/(24*60*60), 'yyyy-mm-dd hh24:mm:ss')
from dual;


 

- to_yminterval('yy-m') / to_dsinterval('ddd hh:dd:ss')
  오라클9g 부터 지원되는 명령어
  add_months(sysdate, 12*1+2) 와 sysdate + to_yminterval('01-02') 는 동일.

 

 

 

 

 

 

 

문제1. case문을 사용하여 to_char(sysdate, 'd')를 이용, 현재 요일을 숫자가 아닌 요일명으로 출력하게 하는 쿼리문을 작성하라.

 

문제2. 아래의 그림처럼 처리하는 쿼리문을 작성하라.

 

 

 

 

 

 

 

답.1.

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 '토요일'
            else '없음' end as "오늘의 요일명"
from dual;

 

답.2 (이외 쿼리문도 결과만 같으면 됨)

select saname as "사원명",
            extract(year from sysdate) - ( substr(jubun, 1, 2) + case when substr(jubun, 7, 1) in ('1', '2') then 1900 else 2000 end) + 1 as "현재나이",
            case when substr(jubun, 7, 1) in ('1', '3') then '남' else '여' end as "성별"
from jikwon;


WRITTEN BY
빨강꼬마

,