728x90
반응형
숫자 관련 함수
반올림
1 2 3 4 5 6 | SELECT 123.456 , ROUND(123.456) , ROUND(123.456 , 1) , ROUND(123.456,2) FROM DUAL; | cs |
( ) 괄호 두번째 , 숫자는 소수점 몇번째 까지 나타내라~ 라는 의미이다.
올림, 버림
1 2 3 4 | SELECT 123.456 , CEIL(123.456) , FLOOR(123.456) FROM DUAL; | cs |
CEIL 은 올림, FLOOR은 내림 함수이다.
나머지구하기
1 | SELECT MOD(10, 4) FROM DUAL; | cs |
형 변환 함수 ****(중요)
숫자 <--> 문자 <--> 날짜
1 2 3 4 | SELECT * FROM EMP WHERE HIREDATE = '07/03/01'; --WHERE HIREDATE = '20070301'; 위 WHERE문과 동일. | cs |
조건에서 날짜를 비교할 때는 숫자는 안되고 문자는 가능하다.
쉬운 예로, 위와 같이 날짜 타입으로 형 변환 후 비교하는게 가장 좋은 방법이다.
숫자를 문자로, 문자를 숫자로 변환
1 2 3 4 5 | SELECT 1001 , TO_CHAR(1001) , '1001' , TO_NUMBER('1001') FROM DUAL; | cs |
왼쪽 정렬은 문자,
오른쪽 정렬은 숫자
문자를 날짜로, 날짜를 문자로 변환
1. 날짜를 문자로 변환
1 2 3 4 5 6 7 | SELECT TO_CHAR(SYSDATE, 'YYYY-MM-DD') , TO_CHAR(SYSDATE, 'YYYY') , TO_CHAR(SYSDATE, 'HH24:MI:SS') , TO_CHAR(SYSDATE, 'YYYYMMDDHH24MISS') , TO_CHAR(SYSDATE, 'YYYY/MM/DD') , TO_CHAR(SYSDATE, 'YYYY-MM-DD HH24:MI:SS') FROM DUAL; | cs |
EX) 오늘 날짜를 '2023년 2월 21일'로 출력
1 2 | SELECT TO_CHAR(SYSDATE, 'YYYY') ||'년 ' || TO_CHAR(SYSDATE, 'MM') ||'월 '|| TO_CHAR(SYSDATE, 'DD') ||'일' FROM DUAL; | cs |
좀 많이 번잡하니 AS 별칭을 주자.
1 2 | SELECT TO_CHAR(SYSDATE, 'YYYY') ||'년 ' || TO_CHAR(SYSDATE, 'MM') ||'월 '|| TO_CHAR(SYSDATE, 'DD') ||'일' AS 오늘날짜 FROM DUAL; | cs |
2. 문자를 날짜로 변환
1 2 | SELECT TO_DATE('20230221') FROM DUAL; | cs |
1 2 3 4 5 6 7 8 9 | CREATE TABLE DATE_TEST ( NUM NUMBER PRIMARY KEY , MY_DATE DATE ); INSERT INTO DATE_TEST VALUES(1, SYSDATE); INSERT INTO DATE_TEST VALUES(2, '20230221'); COMMIT; | cs |
1 2 3 4 | SELECT NUM, MY_DATE , TO_CHAR(MY_DATE, 'YYYY-MM-DD') , TO_CHAR(MY_DATE, 'YYYY-MM-DD HH24:MI:SS') FROM DATE_TEST; | cs |
이와 같이 에러가 난다.
형변환 필수!
1 2 3 4 5 | -- 2005년 1월 1일 이후로 입사한 사원의 모든 정보 조회 SELECT * FROM EMP WHERE HIREDATE >= '20050101'; SELECT * FROM EMP WHERE HIREDATE >= TO_DATE('20050101'); SELECT * FROM EMP WHERE TO_CHAR(HIREDATE, 'YYYYMMDDHH24MISS') >= '20050101101010'; -- 둘다 문자로 바꿔주거나 둘다 날짜로 바꿔주자. | cs |
이처럼 둘다 문자로 바꿔주거나 둘다 날짜로 바꿔주자.
728x90
반응형
'✨ DBMS > Oracle' 카테고리의 다른 글
[Oracle / SQL] 많이 쓰는 함수 NVL , NVL2 , DECODE , CASE (0) | 2023.02.26 |
---|---|
[Oracle / SQL] SQL INSERT, UPDATE, DELETE (0) | 2023.02.23 |
[Oracle / SQL] 더미테이블(DUAL)과 유용한 문자 함수 예제 (0) | 2023.02.21 |
[Oracle / SQL] 쿼리문 합치기 UNION, UNION ALL (0) | 2023.02.21 |
[Oracle / SQL] sqldeveloper 경고 - 일부 모듈을 설치하지 못했습니다. (0) | 2023.02.17 |
댓글