패키지

TO_CHAR, TO_DATE 쿼리문 본문

DataBase

TO_CHAR, TO_DATE 쿼리문

업단업업 2015. 8. 24. 18:08


날짜 데이터 비교시 형식 주의.


TO_CHAR(날짜데이터, 형식)

: 날짜를 서식에 맞춰서 문자열로 변환

TO_CHAR(날짜, '서식') -> 서식에 맞는 문자열 반환


--날짜 데이터를 원본 그대로 출력

SELECT hire_date FROM employees;  --03/06/17 , 년/월/일


SELECT TO_CHAR(hire_date, 'YYYY-MM-DD') AS hire_date FROM employees;  --2003-06-17 , 년도-월-일


SELECT TO_CHAR(hire_date, 'YYYY') AS hire_date FROM employees;  --2003 , 년도


SELECT TO_CHAR(hire_date, 'MM') AS hire_date FROM employees;  --06 , 월


SELECT TO_CHAR(hire_date, 'DD') AS hire_date FROM employees;  --17 , 일


-주민번호 기준으로 5월달생만 출력.

주민번호의 생년월일 부분만을 추출->날짜형 자료로 변환->월 부분만 추출.

SELECT * FROM insa WHERE TO_CHAR(TO_DATE(SUBSTR(ssn, 1, 6)), 'MM') = 5;




***SYSDATE

시스템에 저장된 현재 날짜를 반환하는 함수로서, 초 단위까지 반환한다. 결과를 시, 분, 초 단위까지 출력하기 위해서는 TO_CHAR 함수를 사용하여 날짜 형식을 변환해야 한다.


SELECT SYSDATE FROM dual; --15/03/18

SELECT TO_CHAR(SYSDATE, 'YYYY-MM-DD') FROM dual; --

SELECT TO_CHAR(SYSDATE, 'YYYY-MM-DD HH24:MI:SS') FROM dual; --


SELECT TO_CHAR(SYSDATE, 'HH24:MI') FROM dual; --12:41


SELECT TO_CHAR(hire_date, 'YYYY-MM-DD HH24:MI:SS') FROM employees;

--> 기존 데이터는 시분초가 모두 00으로 세팅되어 있다.



***TO_DATE(char, 서식)

문자를 날짜로 변환


2012년 1월 1일부터 오늘 날짜까지의 일 수 출력.

SELECT SYSDATE - TO_DATE('20120101') AS nalsu FROM dual;

-->12.5896875


- 남자 중에서 나이를 기준으로 오름차순 정렬해서 출력.

SELECT * FROM insa

WHERE SUBSTR(ssn, 8, 1) IN ('1', '3')

ORDER BY TO_DATE(SUBSTR(ssn, 1, 6)) ASC;



Comments