toggle menu

Oracle 날짜 함수 정리

2012.07.10 10:34 Database/Oracle

SYSDATE
현재 시스템의 날짜를 반환한다.

ROUND(date, format)
날짜를 format에 따라 반올림한다.

TRUNC(date, format)
날짜를 format에 따라 잘라낸다.


SQL> SELECT SYSDATE 오늘, SYSDATE+1 내일, SYSDATE-1 어제 FROM DUAL;

오늘     내일     어제                                                          
-------- -------- --------                                                      
12/07/09 12/07/10 12/07/08                                                      

SQL> SELECT ROUND(SYSDATE - HIREDATE) AS 근무일수  FROM EMP;

  근무일수                                    
----------                                    
     11527                                    
     11462                                    
     11460                                    
     11421                                    
     11242                                    
     11392                                    
     11353                                    
      9213                                    
     11192                                    
     11262                                    
      9179                                    
     11176                                    
     11176                                    
     11125                                    
     10087                                    

15 개의 행이 선택되었습니다.

SQL> SELECT (HIREDATE), ROUND(HIREDATE,'MONTH')  FROM EMP;

HIREDATE ROUND(HI                             
-------- --------                             
80/12/17 81/01/01                             
81/02/20 81/03/01                             
81/02/22 81/03/01                             
81/04/02 81/04/01                             
81/09/28 81/10/01                             
81/05/01 81/05/01                             
81/06/09 81/06/01                             
87/04/19 87/05/01                             
81/11/17 81/12/01                             
81/09/08 81/09/01                             
87/05/23 87/06/01                             
81/12/03 81/12/01                             
81/12/03 81/12/01                             
82/01/23 82/02/01                             
84/11/26 84/12/01                             

15 개의 행이 선택되었습니다.

SQL> SELECT HIREDATE, TRUNC(HIREDATE, 'MONTH') FROM EMP;

HIREDATE TRUNC(HI                             
-------- --------                             
80/12/17 80/12/01                             
81/02/20 81/02/01                             
81/02/22 81/02/01                             
81/04/02 81/04/01                             
81/09/28 81/09/01                             
81/05/01 81/05/01                             
81/06/09 81/06/01                             
87/04/19 87/04/01                             
81/11/17 81/11/01                             
81/09/08 81/09/01                             
87/05/23 87/05/01                             
81/12/03 81/12/01                             
81/12/03 81/12/01                             
82/01/23 82/01/01                             
84/11/26 84/11/01                             

15 개의 행이 선택되었습니다.





MONTHS_BETWEEN(최근날짜, 비교날짜) 
날짜와 날짜 사이의 개월수를 구해준다.

SQL> SELECT ENAME, SYSDATE, HIREDATE, TRUNC( MONTHS_BETWEEN (SYSDATE, HIREDATE) ) FROM EMP;

ENAME      SYSDATE  HIREDATE TRUNC(MONTHS_BETWEEN(SYSDATE,HIREDATE))       
---------- -------- -------- ---------------------------------------       
SMITH      12/07/09 80/12/17                                     378       
ALLEN      12/07/09 81/02/20                                     376       
WARD       12/07/09 81/02/22                                     376       
JONES      12/07/09 81/04/02                                     375       
MARTIN     12/07/09 81/09/28                                     369       
BLAKE      12/07/09 81/05/01                                     374       
CLARK      12/07/09 81/06/09                                     373       
SCOTT      12/07/09 87/04/19                                     302       
KING       12/07/09 81/11/17                                     367       
TURNER     12/07/09 81/09/08                                     370       
ADAMS      12/07/09 87/05/23                                     301       
JAMES      12/07/09 81/12/03                                     367       
FORD       12/07/09 81/12/03                                     367       
MILLER     12/07/09 82/01/23                                     365       
홍길동     12/07/09 84/11/26                                     331       

15 개의 행이 선택되었습니다.


날짜와 날짜 사이의 총 개월수를 구할 수 있다.
단순한 날짜 차이는 날짜끼리 빼주는 것으로 쉽게 구할 수 있음은 위의 예를 통해 이미 확인했다.





ADD_MONTHS(날짜, 더할 개월 수)

SQL> SELECT ENAME, HIREDATE, ADD_MONTHS(HIREDATE, 6) FROM EMP;

ENAME      HIREDATE ADD_MONT                  
---------- -------- --------                  
SMITH      80/12/17 81/06/17                  
ALLEN      81/02/20 81/08/20                  
WARD       81/02/22 81/08/22                  
JONES      81/04/02 81/10/02                  
MARTIN     81/09/28 82/03/28                  
BLAKE      81/05/01 81/11/01                  
CLARK      81/06/09 81/12/09                  
SCOTT      87/04/19 87/10/19                  
KING       81/11/17 82/05/17                  
TURNER     81/09/08 82/03/08                  
ADAMS      87/05/23 87/11/23                  
JAMES      81/12/03 82/06/03                  
FORD       81/12/03 82/06/03                  
MILLER     82/01/23 82/07/23                  
홍길동     84/11/26 85/05/26                  

15 개의 행이 선택되었습니다.


NEXT_DAY(date, 요일)
해당 날짜에서 입력한 요일에 가장 가까운 날짜를 date 형식으로 반환

LAST_DAY(date)
해당 날짜가 속한 달의 마지막 날을 반환한다.

SQL> SELECT HIREDATE 입사일, LAST_DAY(HIREDATE) 마지막날짜 FROM EMP;

입사일   마지막날                             
-------- --------                             
80/12/17 80/12/31                             
81/02/20 81/02/28                             
81/02/22 81/02/28                             
81/04/02 81/04/30                             
81/09/28 81/09/30                             
81/05/01 81/05/31                             
81/06/09 81/06/30                             
87/04/19 87/04/30                             
81/11/17 81/11/30                             
81/09/08 81/09/30                             
87/05/23 87/05/31                             
81/12/03 81/12/31                             
81/12/03 81/12/31                             
82/01/23 82/01/31                             
84/11/26 84/11/30                             

15 개의 행이 선택되었습니다.

Database/Oracle 관련 포스팅 더보기