Link Search Menu Expand Document

SQL Single Date Function

Table of contents

  1. Single Date Functions
    1. sysdate
      1. 날짜 계산하기
    2. months_between()
    3. add_months()
    4. next_day()
    5. last_day()
    6. round() / trunc()
  2. Example

Single Date Functions

sysdate

시스템의 현재 날짜와 시간

▸ 날짜 함수를 사용할 때 유용하게 이용됨

select sysdate from dual;

날짜 계산하기

종류결과의미
date+number날짜날짜에 일수를 더하여 날짜 계산
date-number날짜날짜에 일수를 빼서 날짜를 계산
date-date일수날짜와 날짜를 빼서 일수를 계산
date+number/24날짜날짜에 시간을 더하여 날짜 계산

months_between()

두 날짜의 개월수가 몇 개월인지를 반환함, 결과는 숫자

syntax

months_between(날짜문자열, 날짜문자열)

select months_between(sysdate, '19981205')
    , months_between(sysdate, hiredate)
    , round(months_between(sysdate, hiredate),0)
from emp;

add_months()

주어진 날짜에 개월수를 더함, 결과는 날짜

▸ 숫자는 정수여야 하고 음수일수도 있음

syntax

add_months(날짜문자열, 숫자)

select sysdate
     , add_months(sysdate, 2)
from dual;

next_day()

주어진 날짜를 기준으로 돌아오는 날짜를 출력, 결과는 날짜

▸ 1부터 일요일, … 7 토요일

▸ Sun과 같이 문자열도 사용가능

syntax

next_day(날짜문자열, 1~7 or sun~sat)

select sysdate
    , next_day(sysdate, 1) 일요일 -- 1 : 일요일
    , next_day(sysdate, 2)     -- 2
    , next_day(sysdate, 3)     -- 3
    , next_day(sysdate, 4)     -- 4
    , next_day(sysdate, 5)     -- 5
    , next_day(sysdate, 6)     -- 6
    , next_day(sysdate, 7)     -- 7
    , next_day(sysdate, 'SUN')	-- SUN ~ SAT	 
from dual;

last_day()

주어진 날짜가 속한 달의 마지막 날짜를 출력

syntax

last_day(날짜문자열)

select sysdate
    , last_day(sysdate)
    , last_day('2024-02-20')
from dual;

round() / trunc()

숫자함수에서 했던 성질 그대로 날짜를 반올림하거나 버림

syntax

round(date, format)

trunc(date, format)

포멧 모델단위
CC, SCC자리 연도의 끝 두 글자를 기준으로 반올림
SYYY, YYYY, YEAR, SYEAR, YYY, YY, Y년(7월 1일부터 반올림)
DDD, D, J일을 기준
HH, HH12, HH24시를 기준
Q한 분기의 두번째 달에 16일을 기준으로 반올림
MONTH, MON, MM, RM월(16일을 기준으로 반올림)
DAY, DY, D한 주가 시작되는 날짜
MI분을 기준
select sysdate
     , round(sysdate)
     , trunc(sysdate) 
  from dual;


Example

Q1. EMP 테이블에서 ename, hiredate, 근무일수, 근속월, 근속년수 출력

select empno
    , ename
    , hiredate
    , trunc(sysdate-hiredate) 근무일수
    , trunc(months_between(sysdate, hiredate), 0) 근속월
    , trunc(trunc(months_between(sysdate, hiredate), 0) / 12, 0) 근속년수
from emp;


이 웹사이트는 jekyll로 제작되었습니다. Patrick Marsceill, Distributed by an MIT license.