DB-디비는 즐겁다

Oracle Database - 숫자와 날짜 함수

광형 2022. 6. 20. 14:08
728x90
728x90
SMALL

https://kwanghyung.tistory.com/entry/Oracle-Database-%ED%95%A8%EC%88%98%EB%93%A4

 

Oracle Database - 함수들

https://kwanghyung.tistory.com/entry/Oracle-Database-SELECT%EB%AC%B8-IS-NULLINORDER-BY-%EB%93%B1-%EB%AC%B8%EB%B2%95%EB%93%A4 Oracle Database-SELECT문 IS NULL,IN,ORDER BY 등 문법들 https://kwanghyung..

kwanghyung.tistory.com

<숫자와 관련된 함수>

    ABS
    ABS( 절대값을 구할 숫자) : 절대값을 구해주는 함수
    결과값은 NUMBER 자료형으로 반환


SELECT ABS(-10)
FROM DUAL;
SELECT ABS(-10.9)
FROM DUAL;



    MOD
    -MOD (숫자,나눌값) : 두 수를 나눈 나머지값을 반환하는 함수
    결과값 NUMBERS


SELECT MOD(10,3)
FROM DUAL; --나머지 1


SELECT MOD(-10,3)
FROM DUAL; --나머지 -1


SELECT MOD(10.9,3) 
FROM DUAL; --나머지 1.9


    ROUND
    -ROUND (반올림하고자하는 수,반올림할위치): 반올림 처리 함수
    
    반올림할위치 : 소숫점 기준으로 아래 N번재 수에서 반올림 하겠다.
                생략 가능(위치 생략 시 기본값은 0, 소숫점 첫번째 자리에서 반올림을 하겠다
                -반올림 결과가 소숫점이 0개이다.)
    결과값은 NUMBER타입으로 반환            


SELECT ROUND(123.456)
FROM DUAL; --123

SELECT ROUND(123.456,1)
FROM DUAL; --123.5

SELECT ROUND(123.456,2)
FROM DUAL; --123.46

SELECT ROUND(123.456,-2)
FROM DUAL; --100


    CEIL
    -CEIL(올림처리할숫자): 소수점 아래의 수를 무조건 올림하는 함수
    반환형은 NUMBER타입


SELECT CEIL(123.456)
FROM DUAL;


SELECT CEIL(451.089)
FROM DUAL;


    FLOOR
    -FLOOR (버림처리하고자 하는 숫자) : 소수점아래의 수를 무조건 버림처리해주는 함수
    
    반환형은 NUMBER타입

SELECT FLOOR(123.956)
FROM DUAL;

SELECT FLOOR(2078.404)
FROM DUAL;

    TRUNC
    -TRUNC (버림처리할숫자,위치) :위치가 지정가능한 버림 처리를 해주는 함수
    결과값은 NUMBER타입
    위치 : 생략가능, 생략시 기본값은 0 (==FLOOR함수)

SELECT TRUNC(123.687)
FROM DUAL; -- 기본 FLOOR함수랑 동일


SELECT TRUNC(123.565,1)
FROM DUAL; -- 123.5


SELECT TRUNC(123.512,2)
FROM DUAL; --123.51


SELECT TRUNC(123.223,-1)
FROM DUAL; --120


    <날짜 관련 함수>
    DATE 타입 : 년도, 월, 일, 시, 분, 초를 다 포함한 자료형
    SYSDATE : 현재 시스템 날짜 반환
    

SELECT SYSDATE
FROM DUAL;


    MONTHS_BETWEEN(DATE,DATE2) : 두 날짜 사이의 개월수를 반환( 결과값은 NUMBER타입)
    만약 DATE2가 더 미래의 날이라면 음수로 반환됩니다.
    각 직원별 근무일수,근무 개월수

SELECT EMP_NAME
       ,FLOOR(SYSDATE-HIRE_DATE)||'일'근무일수
       ,FLOOR(MONTHS_BETWEEN(SYSDATE,HIRE_DATE))|| '월' 근무개월수
FROM EMPLOYEE;


    ADD_MONTHS(DATE,NUMBER) : 특정 날짜에 해당 숫자만큼 개월수를 더한 날짜를 반환한다.(결과값은 DATE타입)
    오늘 날짜로부터 5개월 이후

SELECT ADD_MONTHS(SYSDATE,5)
FROM DUAL;

SELECT SYSDATE+100 AS "100일후"
FROM DUAL;

사원들의 입사 1주년
SELECT EMP_NAME, HIRE_DATE, ADD_MONTHS(HIRE_DATE,12)"입사 1주년"
FROM EMPLOYEE;

NEXT_DAY(DATE, 요일(문자/숫자)) : 특정 날짜에서 가장 가까운 해당 요일을 찾아 그 날짜로 반환(결과값이 DATE타입)
SELECT NEXT_DAY(SYSDATE,'토요일')
FROM DUAL;

SELECT NEXT_DAY(SYSDATE,'토')
FROM DUAL;


1: 일요일 2:월 3: 화 4: 수 5: 목 6: 금 7: 토
SELECT NEXT_DAY(SYSDATE,6)
FROM DUAL;

토요일 : SATURDAY 언어가 달라서 오류 
SELECT NEXT_DAY(SYSDATE,'SATURDAY')
FROM DUAL;

언어변경
DDL(데이터 정의 언어) : CREATE,ALTER,DROP
ALTER SESSION SET NLS_LANGUAGE = KOREAN;

LAST_DAY(DATE) : 해당 특정 날짜달의 마지막 날짜를 구해서 반환(결과값은 DATE타입)
SELECT LAST_DAY(SYSDATE)
FROM DUAL;

이름,입사일, 입사한 달의 마지막날 조회
SELECT EMP_NAME, HIRE_DATE,LAST_DAY(HIRE_DATE)
FROM EMPLOYEE;

EXTRACT : 년도 또는 월 또는 일 정보를 추출해서 반환
EXTRACT(YEAR FROM 날짜)  : 특정 날짜로부터 년도만 추출
EXTRACT(MONTH FROM 날짜) : 특정 날짜로부터 년도만 추출
EXTRACT(DAY FROM 날짜)   : 특정 날짜로부터 일만 추출*/
    
SELECT EXTRACT(YEAR FROM SYSDATE)
        ,EXTRACT(MONTH FROM SYSDATE)
        ,EXTRACT(DAY FROM SYSDATE)
FROM DUAL;

사원명, 입사년도, 입사월, 입사일 조회
SELECT EMP_NAME, HIRE_DATE, EXTRACT(YEAR FROM HIRE_DATE)"입사년도"
                            ,EXTRACT(MONTH FROM HIRE_DATE)"입사월"
                            ,EXTRACT(DAY FROM HIRE_DATE)"입사일"
FROM EMPLOYEE;

728x90
300x250
LIST