시간을 더할 때는

DATE_ADD( NOW(), INTERVAL 1 DAY )

 

 

시간을 뺄 때는

DATE_SUB( NOW(), INTERVAL 1 DAY )

 

 

DAY 자리에는 초,분,시,일,주,달등의 분류들을 사용할 수 있다.

MICROSECOND, SECOND, MINUTE, HOUR
DAY, WEEK, MONTH, QUARTER, YEAR

 

 

시간의 차이을 계산할 때는

TIMEDIFF( 시간1, 시간2 )

 

 

※ Oracle처럼 시간1 - 시간2 하면?

 

SELECT 시간1 - 시간2 FROM DUAL;

 

숫자가 나오긴 한다.

 

시간1 : 2018-05-01 16:27:11 이고

시간2 : 2018-05-01 11:38:30 일 때

결과 : 48881 이 나온다.

 

이 결과의 의미는?

왜 이런 결과가?

 

시간을 단순 숫자로 변환해서 빼기 시킨 결과이다.

 

162711 - 113830 = 48881

 

 

의도한 경우가 아니라면

단순 빼기 보다는

DATEDIFF 나 TIMEDIFF 를 써야한다.

 

 

임의의 날짜를 설정해서 TEST 해야할 때 유용할 듯...

 

오늘에서 임의의 날짜를 빼고

시간, 분, 초를 임의의 난수로 채워서

날짜를 만들어낸다.

 

STR_TO_DATE( CONCAT( DATE_FORMAT( DATE_SUB(CURDATE(), INTERVAL CAST(RAND() * 100 AS UNSIGNED) DAY), '%Y%m%d' )
                               , LPAD( CAST( CAST(RAND() * 23 AS UNSIGNED) AS CHAR ), 2, '00' )
                               , LPAD( CAST( CAST(RAND() * 59 AS UNSIGNED) AS CHAR ), 2, '00' )
                               , LPAD( CAST( CAST(RAND() * 59 AS UNSIGNED) AS CHAR ), 2, '00' ) ), '%Y%m%d%H%i%s' )

UPDATE TB SET dttm = STR_TO_DATE(...) 로 써먹을 수 있다.

 

 

'plming > DB' 카테고리의 다른 글

MySQL - rownum, rank, SQL_CALC_FOUND_ROWS  (0) 2017.11.29
MySQL - Select한 값으로 Update  (0) 2017.11.28
[MySQL] millisecond, microsecond 표시하기  (0) 2017.10.16
ERD - 테이블 관계(식별,비식별)  (0) 2016.06.08
eXERD  (0) 2016.06.08

+ Recent posts