PHP언어 웹개발 서버관리 DB관련 모바일 Mac세상 USA에서 살아남기 블로그
DB관련/MySQL2021. 10. 15. 03:22

반응형

MySQL를 사용하다 보면, Date관련 검색 결과를 필요로 하는 경우가 많습니다.

 

쉽게 100일? 만난지 오늘로 몇일? 입사 개월 구하기 등에 유용한 함수들

 

예를 들면,

100일 날짜를 구하기?

우리가 만난 지 오늘은 몇 일차?

입사 개월 수 구하기?

입사 몇 년 차 인지 구하기?

 

날짜에 관련된 정보는 다양하게 변형할 수 있는 조건들이 많고,

사용 빈도도 많은 편이죠.

MySQL의 DATE_ADD/DATE_SUB과 DATEDIFF/TIMESTAMPDIFF함수를 이용해서,

쉽게 날짜 정보를 만들 수 있습니다.

 

DATE_ADD와 DATE_SUB 함수의 Syntax

DATE_ADD(date, INTERVAL value addunit)

##[ addunit ]###
MICROSECOND
SECOND
MINUTE
HOUR
DAY
WEEK
MONTH
QUARTER
YEAR
SECOND_MICROSECOND
MINUTE_MICROSECOND
MINUTE_SECOND
HOUR_MICROSECOND
HOUR_SECOND
HOUR_MINUTE
DAY_MICROSECOND
DAY_SECOND
DAY_MINUTE
DAY_HOUR
YEAR_MONTH

 

DATEDIFF와 TIMESTAMPDIFF함수의 Syntax

TIMESTAMPDIFF(unit, datetime_expr1, datetime_expr2)

##[ unit ]####
MICROSECOND
SECOND
MINUTE
HOUR
DAY
WEEK
MONTH
QUARTER
YEAR

TIMESTAMPDIFF()

 

 

 예제 1) 특정 기준일로 오늘은 몇 일차? (참고: 기준일을 포함하려면, 1을 더해야 합니다)

-- 10/12기준으로 오늘(10/14)은 몇일? (기준일을 1일로 포함하여 계산)
SELECT 
    TIMESTAMPDIFF(DAY, '2021-10-10', NOW()) + 1 AS DAYS
    ,NOW() AS TODAY

==[ Result ]=======================
DAYS	TODAY
5	2021-10-14 10:21:11

 

 

예제 2) 오늘 기준으로 100일은? (참고: 오늘이 1일로 계산할 경우 = 기준일 포함)

-- 오늘(10/14) 기준으로 100일은? (기준일을 1일로 계산한다면)
SELECT DATE_ADD('2021-10-14', INTERVAL 99 DAY) AS DAYS_100


##[ Rusult ]####
DAYS_100
2022-01-21

 

 

예제 3) 오늘 기준 입사 몇 개월 되었나? (참고: 입사한 해당 달은 0개월이죠)

-- 한달의 기준은 기준일의 날짜가 되면 한달로 계산됩니다.
SELECT 
    TIMESTAMPDIFF(MONTH, '2021-09-14', '2021-09-30') AS MONTHS
    ,TIMESTAMPDIFF(MONTH, '2021-09-14', '2021-10-13') AS MONTHS1
    ,TIMESTAMPDIFF(MONTH, '2021-09-14', '2021-10-14') AS MONTHS2
    ,TIMESTAMPDIFF(MONTH, '2021-09-14', NOW()) AS MONTHS3
    ,NOW() AS TODAY
    
##[ Result ]####
MONTHS	MONTHS1	MONTHS2	MONTHS3	TODAY
0	0	1	1	2021-10-14 10:47:14

 

 

예제 4) 나의 입사일로 10개월은 언제가 일까? (기준일로 다음 달 그날이 1개월)

-- 오늘 기준으로 10개월은 언제일까?
SELECT 
    DATE_ADD('2020-10-14', INTERVAL 10 MONTH) AS MONTHS
    ,DATE_ADD(NOW(), INTERVAL 10 MONTH) AS MONTHS2
    ,NOW() AS TODAY
   
   
##[ Result ]####
MONTHS		MONTHS2			TODAY
2021-08-14	2022-08-14 11:02:47	2021-10-14 11:02:47

 

 

 

예제 5) 나의 근무 연차는? (참고: 입사하자마자 1년 차로 계산될 때)

-- 년차 계산시, 기준 년도를 1년차로 포함할때.
SELECT 
    TIMESTAMPDIFF(YEAR, '2020-10-14', '2021-10-13') + 1 AS YEARS
    ,TIMESTAMPDIFF(YEAR, '2020-10-14', '2021-10-14') + 1 AS YEARS1
    ,TIMESTAMPDIFF(YEAR, '2020-10-14', NOW()) + 1 AS YEARS2
    ,NOW() AS TODAY
    
##[ Resutl ]####
YEARS	YEARS1	YEARS2	TODAY
1	2	2	2021-10-14 10:51:46

여기서, TIMESTAMPDIFF() + 1을 해줌으로써 입사한 년도부터 1년 계산 값이 나오게 됩니다.

 

 

다음과 같이 일자(Date) 포맷에 계산은 많은 경우에 유용합니다.

많은 리포트 통계 및 특정일자 추출에 DATE_ADD와 TIMESTAMPDIFF는 유용한 함수입니다.

DATE관련 함수들을 잘 이용함으로 프로그램 로직을 줄일 수 있답니다.

 

 

 

 

반응형
도움이 되셨다면 하트모양의 "♡ 공감"을 눌러주시면 큰 격려가 됩니다.
(로그인하지 않으셔도 가능)
Posted by saltdoll

댓글을 달아 주세요