1. 더하기
DATE_ADD(date, INTERVAL expr type)
DATE_ADD(날짜, INTERVAL 시간 시간타입)
ex)
DATE_ADD(now(), INTERVAL 1 HOUR) : 현재 시각에 1시간 더하기
DATE_ADD(now(), INTERVAL -10 MINUTE) : 현재 시각에 10분 빼기
DATE_ADD(now(), INTERVAL 100 SECOND) : 현재 시각에 100초 더하기
1
2
3
4
|
SELECT seq
FROM hst_info
WHERE 1=1
AND JOIN_DATE < DATE_ADD(now(), INTERVAL -1 HOUR)
|
cs |
: 현재시각(now()) 에 -1 시간(HOUR)을 더한(DATE_ADD) 값이 JOIN_DATE 보다 더 큰 hst_info 테이블의 seq 값을 조회
* expr 값으로 음수를 넣을 경우 음수를 더하면 뺄셈이 되므로 DATE_SUB 함수와 같이 동작한다.
2. 빼기
DATE_SUB(date, INTERVAL expr type)
DATE_SUB(날짜, INTERVAL 시간 시간타입)
ex)
DATE_SUB(now(), INTERVAL 1 HOUR) : 현재 시각에 1시간 빼기
DATE_SUB(now(), INTERVAL -10 MINUTE) : 현재 시각에 10분 더하기
DATE_SUB(now(), INTERVAL 100 SECOND) : 현재 시각에 100초 빼기
1
2
3
4
|
SELECT seq
FROM hst_info
WHERE 1=1
AND JOIN_DATE < DATE_SUB(now(), INTERVAL 1 HOUR)
|
cs |
: 현재시각(now()) 에 1 시간(HOUR)을 뺀(DATE_SUB) 값이 JOIN_DATE 보다 더 큰 hst_info 테이블의 seq 값을 조회
* expr 값으로 음수를 넣을 경우 음수를 빼는건 덧셈이 되므로( -(-1) = +1) DATE_ADD 함수와 같이 동작한다.
3. 기간 구하기
TIMESTAMPDIFF(interval, datetime_expr1, datetime_expr2)
TIMESTAMPDIFF(시간타입, 시작시각, 끝시각)
ex)
TIMESTAMPDIFF(DAY, '20190820', now()) : 현재년월일 - 20190820 (%Y%m%d) 을 DAY 로 환산
TIMESTAMPDIFF(SECOND, '20190820140000', now()) : 현재년월일 - 20190820140000 (%Y%m%d%H%i%s) 을 SECOND 로 환산
1
2
3
|
SELECT seq
FROM hst_info
WHERE TIMESTAMPDIFF(SECOND, JOIN_DATE, now()) > 3600
|
cs |
: JOIN_DATE 시각 부터 현재시각(now()) 까지의 시간차이를 초(SECOND)로 환산한 값이 1시간(3600초) 보다 큰 hst_info 테이블의 seq 값을 조회
위와 같은 함수들을 사용하여
이력 및 통계를 뽑아내거나, 배치를 돌릴 때 시간을 기준으로 데이터를 조작할 수 있다.
참고 : https://dev.mysql.com/doc/refman/8.0/en/date-and-time-functions.html
* ORACLE 시간계산
https://oracle.tistory.com/216
'DB > MYSQL' 카테고리의 다른 글
SYSDATE vs NOW (SYSDATE 와 NOW 의 차이) (0) | 2019.11.02 |
---|---|
Mysql hierarchy sql 계층구조 쿼리 : 설계 및 쿼리작성(Multi selectbox) (0) | 2019.08.21 |
SELECT + INSERT (mysql + mybatis) (0) | 2019.06.12 |
[Mysql/ORACLE] 여러 행을 한 줄로 표현하기(GROUP_CONCAT) (0) | 2019.05.27 |
mysql GROUP BY (only full group by) (3) | 2019.03.11 |