SQL

단일행함수 - 날짜함수

에어팟맥스 2022. 7. 4. 20:15

------------ >> 3. 날짜 함수 << ------------

 날짜1 + 숫자 = 날짜2  ==> 날짜1 에서 숫자(일수)만큼 더한 값이 날짜2가 된다.
        날짜1 - 숫자 = 날짜2  ==> 날짜1 에서 숫자(일수)만큼  뺀 값이 날짜2가 된다.
        
        여기서 중요한 것은 숫자의 단위가 '일수' 라는 것이다.

 

 --- 단위 환산 ---
        1 kg = 1000 g
        1 g  = 1/1000 kg
        
        1 일   = 24 시간
        1 시간 = 1/24 일
        1 시간 = 60 분
        1 분   = 1/60 시간
        1 분   = 60 초
        1 초   = 1/60 분

 

select sysdate - 1, to_char(sysdate -1, 'yyyy-mm-dd hh24:mi:ss') 어제시각
         , sysdate    , to_char(sysdate   , 'yyyy-mm-dd hh24:mi:ss') 현재시각
         , sysdate + 1, to_char(sysdate +1, 'yyyy-mm-dd hh24:mi:ss') 내일시각
    from dual;

 

 

--- 3.1 to_yminterval , to_dsinterval

to_yminterval 은 년 과 월을 나타내어 연산자가 + 이면 날짜에서 더해주는 것이고,
to_dsinterval 은 일 시간 분 초를 나타내어 연산자가 + 이면 날짜에서 더해주는 것이다.
연산자가 - 를 쓰면 날짜를 빼주는 것이다.

현재일로 부터 1년 2개월 3일 4시간 5분 6초 뒤(미래)를 나타내세요

 select to_char(sysdate   , 'yyyy-mm-dd hh24:mi:ss') 현재시각
         , to_char( sysdate + to_yminterval('01-02') + to_dsinterval('003 04:05:06'),'yyyy-mm-dd hh24:mi:ss')  "1년 2개월 3일 4시간 5분 6초 뒤"
    from dual;

현재일로 부터 1년 2개월 3일 4시간 5분 6초 전(과거)를 나타내세요

 select to_char(sysdate   , 'yyyy-mm-dd hh24:mi:ss') 현재시각
         , to_char( sysdate - to_yminterval('01-02') - to_dsinterval('003 04:05:06'),'yyyy-mm-dd hh24:mi:ss')  "1년 2개월 3일 4시간 5분 6초 전"
    from dual;

 

 

-- 3.2 add_months(날짜,숫자)
        ==> 숫자가 양수이면 날짜에서 숫자의 개월 수 만큼 더한 날짜를 나타내고,
            숫자가 음수이면 날짜에서 숫자의 개월 수 만큼 뺀 날짜를 나타낸다.
            
            여기서 숫자의 단위는 개월 수이다.

select to_char( add_months(sysdate,-2), 'yyyy-mm-dd hh24:mi:ss' ) "2개월 전 시각"
           , to_char(sysdate, 'yyyy-mm-dd hh24:mi:ss') 현재시각
           , to_char( add_months(sysdate,2), 'yyyy-mm-dd hh24:mi:ss' ) "2개월 후 시각"
      from dual;
      
      
       select to_char( add_months(sysdate+1,18), 'yyyy-mm-dd hh24:mi:ss' ) "2개월 후 시각"
      from dual;

 

-- 3.3 months_between(날짜1, 날짜2)
        날짜1에서 날짜2를 뺀 값으로 그 결과는 숫자가 나오는데 결과물 숫자의 단위는 개월수이다.
        즉, 두 날짜의 개월 차이를 구할 때 사용한다.

select months_between( add_months(sysdate, 3), sysdate )
      from dual;

 -- *** 날짜1 - 날짜2 = 숫자
      -- ==> 날짜1에서 날짜2를 뺀 값으로 숫자가 나오는데 결과물 숫자의 단위는 일수이다.
      -- 날짜1에서 날짜2를 뺀 값으로 그 결과는 숫자가 나오는데 결과물 숫자의 단위는 일수이다.
      -- 즉, 두 날짜의 일수 차이를 구할 때 사용한다.

 select (sysdate+3) - sysdate
      from dual;
      
      select add_months(sysdate, 1) - sysdate
      from dual;

 

-- 3.4 last_day(특정날짜)
      --     ==> 특정날짜가 포함된 달력에서 맨 마지막 날짜를 알려주는 것

select sysdate, last_day(sysdate)
      from dual;
      -- 22/07/04	22/07/31
      
      select add_months(sysdate, -1), last_day( add_months(sysdate, -1) )
      from dual;
      -- 22/06/04	22/06/30
      
      select to_date( '2022-07-04', 'yyyy-mm-dd') + 1 
      from dual;
      -- 22/07/05
      
      select to_date('2020-02-01', 'yyyy-mm-dd'), last_day( to_date('2020-02-01', 'yyyy-mm-dd') )
           , to_date('2022-02-01', 'yyyy-mm-dd'), last_day( to_date('2022-02-01', 'yyyy-mm-dd') )
      from dual;

 

 -- 3.5 next_day(특정날짜, '일') '일' '월' '화' '수' '목' '금' '토'
      --     ==> 특정날짜로부터 다음번에 돌아오는 가장 빠른 '-'요일의 날짜를 알려주는 것이다.

 select sysdate
           , next_day(sysdate, '금')
           , next_day(sysdate, '월')
      from dual;
      -- 22/07/04	22/07/08	22/07/11

 

 -- 3.6 extract ==> 날짜에서 년, 월, 일을 숫자형태로 추출해주는 것

 select sysdate
           , to_char(sysdate, 'yyyy'), extract(year from sysdate)
           , to_char(sysdate, 'mm'), extract(month from sysdate)
           , to_char(sysdate, 'dd'), extract(day from sysdate)
      from dual;

 

 


--- *** [퀴즈] 현재 시각으로부터 1일 2시간 3분 4초 뒤를 나타내시오 *** ---

 select to_char(sysdate   , 'yyyy-mm-dd hh24:mi:ss') 현재시각
           , to_char(sysdate + ( 1 + 2/24 + 3*1/24/60 + 4*1/24/60/60 ), 'yyyy-mm-dd hh24:mi:ss') "1일 2시간 3분 4초 뒤"
    from dual;
    -- 2022-07-01 16:41:29
    -- 2022-07-02 18:44:33
 select to_char(sysdate   , 'yyyy-mm-dd hh24:mi:ss') 현재시각
         , to_char( sysdate + to_dsinterval('001 02:03:04'),'yyyy-mm-dd hh24:mi:ss')  "1년 2개월 3일 4시간 5분 6초 뒤"
     from dual;

'SQL' 카테고리의 다른 글

단일행함수 - 기타함수  (0) 2022.07.04
단일행함수 - 변환함수  (0) 2022.07.04
단일행함수 - 숫자함수  (0) 2022.07.04
단일행 함수 - 문자 함수  (0) 2022.07.04
like 연산자 % , _ , escape  (0) 2022.07.04