MariaDB/SQL

[MariaDB]TIMEDIFF 함수를 활용한 시간 계산 SQL

DBA_JSH 2017. 2. 17. 15:56

[테스트 환경]

- Linux CentOs7

- MariaDB 10.1.12


1. TIMEIDFF,TIME_FORMAT 함수 

 -  TIMEDIFF : 두 개의 시간 값의 차를 계산하여 년월일시분초로 값을 리턴해 주는 함수 

 - TIME_FORMAT : 시간 값을 원하는 유형으로 포맷을 변경해주는 함수 


2. 실습 예제 

 - 로그인하여 접속을 유지한 시간의 값을 알고 싶을 때 위의 두개의 함수를 사용하여 값을 출력 한다. 

 
/*로그인_로그아웃 테이블 생성 */
CREATE TABLE DA_LOGIN_LOGOUT_TB (
  LOGIN_LOGOUT_SEQ_NO int(9)  NULL ,
  DA_LOGIN_DATE datetime  NULL,
  DA_LOGOUT_DATE datetime  NULL,
  DA_DATE_UNIT  varchar(10) NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8 ;

/*날짜 데이터 추가*/
INSERT INTO DA_LOGIN_LOGOUT_TB(LOGIN_LOGOUT_SEQ_NO,DA_LOGIN_DATE,DA_LOGOUT_DATE,DA_DATE_UNIT) VALUES(1,NOW(),DATE_ADD(NOW(),INTERVAL +1 DAY),'DAY' );
INSERT INTO DA_LOGIN_LOGOUT_TB(LOGIN_LOGOUT_SEQ_NO,DA_LOGIN_DATE,DA_LOGOUT_DATE,DA_DATE_UNIT) VALUES(2,NOW(),DATE_ADD(NOW(),INTERVAL +1 MONTH),'MONTH' );
INSERT INTO DA_LOGIN_LOGOUT_TB(LOGIN_LOGOUT_SEQ_NO,DA_LOGIN_DATE,DA_LOGOUT_DATE,DA_DATE_UNIT) VALUES(3,NOW(),DATE_ADD(NOW(),INTERVAL +1 HOUR),'HOUR' );

/*로그인 유지 시간 조회 쿼리 작성*/
SELECT   A.LOGIN_LOGOUT_SEQ_NO, 
         A.DA_LOGIN_DATE, /*로그인시간*/
         A.DA_LOGOUT_DATE, /*로그아웃시간*/
         TIMEDIFF(A.DA_LOGOUT_DATE,A.DA_LOGIN_DATE) AS LOGOUT_MAINTAIN, /*로그인 유지시간*/
         TIME_FORMAT(TIMEDIFF(A.DA_LOGOUT_DATE,A.DA_LOGIN_DATE),'%H%i%s') AS LOGOUT_MAINTAIN, /*로그인 유지시간*/
         TIME_FORMAT(TIMEDIFF(A.DA_LOGOUT_DATE,A.DA_LOGIN_DATE),'%H시%i분%s초') AS LOGOUT_MAINTAIN, /*로그인 유지시간*/
         TIME_FORMAT(TIMEDIFF(STR_TO_DATE('20170217170230','%Y%m%d%H%i%s'),A.DA_LOGIN_DATE),'%H%i%s') AS LOGOUT_MAINTAIN_HHMMSS, /*장비 로그인 유지 시분초*/
         A.DA_DATE_UNIT 
FROM     DA_LOGIN_LOGOUT_TB A;


3. 결과 데이터 

 - 아래 결과와 같이 두 개의 함수를 사용하여 다양한 형태로 결과 데이터를 출력 할 수 있다.