'활용'에 해당되는 글 2건

  1. 2008.12.09 to_date 함수 활용 2
  2. 2008.05.29 ORACLE 에서의 TRUNC() 함수
Database/Oracle2008. 12. 9. 16:32

오라클 함수에 날짜형식으로 변환할수 있는 함수인
to_date 함수가 있습니다.

오늘은 to_date() 를 사용하는 방법을 적어볼까 합니다.
제가 주로 쓰던거와.. 오늘 급작스럽게 테스트해보고 알게된 내용 정리죠 ^^;

주로 to_date를 사용할때는
select to_date('20081209142500' , 'YYYYMMDDHH24MISS') from dual;

과 같이 사용해서 날짜형식을 만들어 사용했습니다.
(저와.. 저희회사에서 주로... ㅎㅎㅎ;;)

그런데 제가 추가로 급여관리 프로그램을 만들던 도중에..
12월달 data들(출/퇴근기록) 계속 저장해놓고 있었습니다..  (미리 DB설계가 반영이 안돼있던터라)

그리고 이제 저장해놓은 백업데이터들을 DB에 입력하려는데..
그동안 저장해온 출/퇴근시간이.. 이렇게 저장되어있었죠..
2008-11-28 오전 8:59:54

ㅠ.ㅠ;     순간 난감한가운데... 열심히 뒤적뒤적...  찾다보니

http://www.gotapi.com     (각종레퍼런스제공)

훗 제가 자주애용하던곳에서 to_date 함수를 검색해서 찾아봤습니다.
SELECT TO_DATE(
'January 15, 1989, 11:00 A.M.',
'Month dd, YYYY, HH:MI A.M.',
'NLS_DATE_LANGUAGE = American')
FROM DUAL;
예제로 요런 코드가 제공되더군요.. 
이걸가지구 또 한참을 삽질하다가.. 'NLS_DATE_LANGUAGE = American'  이라는 부분은
별로 필요없는듯하여 버리구.. 만들어낸것이
SELECT TO_DATE('2008-11-28 오전 8:59:54','YYYY-MM-DD A.M. HH:MI:SS')
FROM DUAL;
결국 원하는 값을 얻어냈습니다. ㅋ
다른게 아닌 char 형식의 것들에서 date 형식으로의 변환을 위한 매칭되는 예약어들만 알면
해결되는것이었습니다~ ㅎ
YYYY(4자리 년도) , MM(두자리 월) , DD (두자리 날짜) , A.M. (요게 오전,오후를 나타내는거죠)
HH(시간이구요, 요건 1~12로 표현되는 시간), MI(두자리 분), SS(두자리 초)
HH24(이것두 시간표현이구요, 1~24시로 표현합니다. 이걸쓰면 A.M. 은 필요없겠죠?)

하하.. 무튼.. 삽질은 계속되는군요..
자주자주 글을 써야하는데...  ㅠ.ㅠ  정말  간만에 쓰네요.. 뭐; 보시는분이 계실지 모르겠지만요;;;




Posted by 햇 님
Database/Oracle2008. 5. 29. 15:27
오늘 소스분석을 하면서 TRUNC() 함수를 보게 되었다.

truncate 의 줄임말인듯하다.
뜻은 절삭? 이라고 해야하나... 사전의 뒤져보는 치밀함까지는 나에게 없다;
대충 짐작하기에 절삭.. 혹은 내림? 정도로 생각하려고 한다.

SELECT SYSDATE FROM DUAL;

위 문장을 실행해보면 현재 날짜를 출력하여준다.

사용자 삽입 이미지


SYSDATE 는 DATE 형식으로 날짜를 출력해주는데..

TRUNC() 함수는 날짜 형식 또한 잘라낼수 있다.
내가 아는 바에 의하면 숫자와 날짜에 한해서만 동작하는것으로 알고 있다.

그럼 TRUNC() 함수를 사용해서 현재날짜를 절삭해보면..

SELECT TRUNC(SYSDATE) FROM DUAL;


위의 문장을 실행하면 된다.
결과값은

사용자 삽입 이미지

자동으로 오늘 날짜에서 시간이 떨어져 나가고 년-월-일 의 값으로 나온다.
조금더 명시적으로 표현해주자면 아래와 같이 써주어도 된다.

SELECT TRUNC(SYSDATE , 'DD') FROM DUAL;

위의 SQL 명령도 같은 결과값을 가진다.


그럼 이어서 여기에 날짜를 더하거나 빼거나 하고.. 절삭한후에 시간을 지정해주는 부분을 보자
조금 더 살펴봐야 알겠지만.. 너무나 쉽게도.. 그냥 더하고 빼면 된다 -_-;

SELECT TRUNC(SYSDATE+1) FROM DUAL;

위의 문장을 실행하게되면..

사용자 삽입 이미지

위의 결과값인 2008-05-29 에서 하루가 추가되는것을 볼 수 있습니다.
같은 방식으로 7을 더하면 일주일 후의 날짜가 나오겠죠?


SELECT TRUNC(SYSDATE+1)+1/24 FROM DUAL;

이번에 SQL 문을 실행하면 절삭하였던 시간을 다시 붙여줄수 있습니다.

사용자 삽입 이미지
기본적이 구문을 시작으로 간단한 응용까지 해봤습니다.
좀더 응용해보면 시간아래에  분/초 도 달수 있겠죠?

Posted by 햇 님