Database/SQL

[MySQL] 현재 날짜와의 차이 계산하기 : 일 차, 주 차, 월 차

헹창 2021. 1. 26.
반응형

[MySQL] 현재 날짜와의 차이 계산하기 : 일 차, 주 차, 월 차


1. 현재 날짜와 특정 날짜의 차이 값 계산하기

 

TIMESTAMPDIFF(옵션, 날짜1, 날짜2)

 

옵션 DAY, WEEK, MONTH 기준으로 일 차, 주 차, 월 차 값을 반환한다.

날짜1이 날짜2 보다 과거인 경우 양수 값으로 반환된다.


 

 일 차이

TIMESTAMPDIFF(DAY, 특정날짜, CURDATE( ))

 

 

주 차이

TIMESTAMPDIFF(WEEK, 특정날짜, CURDATE( ))

 

 

 월 차이

TIMESTAMPDIFF(MONTH, 특정날짜, CURDATE( ))

 

 


예시

 

TEST_TABLE에 STST_DATE 컬럼은 20년 10월부터 21년 1월까지 DATE 타입의 특정 날짜가 있다.

 

해당 특정 날짜와, 현재 날짜, 그리고 두 날짜의 일 차, 주 차, 월 차를 구해보자.

 

SELECT T1.STST_DATE		// 특정 날짜
     , CURDATE()		// 현재 날짜 : 21126일
     , TIMESTAMPDIFF(DAY, T1.STST_DATE, CURDATE()) AS DIFF_DAY		// 일 차이
     , TIMESTAMPDIFF(WEEK, T1.STST_DATE, CURDATE()) AS DIFF_WEEK	// 주 차이
     , TIMESTAMPDIFF(MONTH, T1.STST_DATE, CURDATE()) AS DIFF_MONTH	// 월 차이
  FROM TEST_TABLE T1

 

 

 

결과

 

아래 화면과 같이 특정날짜가 같은 11월 이지만 월 차이가 2인 것이 있고, 1인 것이 있다.

 

즉, TIMESTAMPDIFF 옵션으로 날짜의 차이를 구한 것은 모두 일자를 기준으로 차이 값을 구한다.

 

 

[MySQL] 현재 날짜와의 차이 계산하기 : 일 차, 주 차, 월 차 -  월 차이 - [MySQL] 현재 날짜와의 차이 계산하기 : 일 차, 주 차, 월 차 - 결과

 

 

그렇다면, 일자의 차이와 상관없이 우리가 흔히 알고있는 이번 주, 저번 주, 다음 주 혹은 이번 달, 저번 달

즉, 월요일 기준의 주 차와 월 기준의 월 차를 알고 싶다면 어떻게 해야할까?

 

 

위 쿼리를 응용해보자

 

 

 


2. 응용하여 주 차, 월 차 구하기

 

 

먼저 특정 날짜값의 주 차를 계산하기 위한 기준 날짜, 월 차를 계산하기 위한 기준 날짜를 구해보자.

 

 

기준 날짜가 의미하는 것이 뭔 지 간단히 설명하자면,

 

 

[MySQL] 현재 날짜와의 차이 계산하기 : 일 차, 주 차, 월 차 - 2. 응용하여 주 차, 월 차 구하기

 

특정 날짜가 1월 26일인 경우,

 

주 차이를 계산하기 위해 그 주의 월요일 날짜 1월 25일을 구해야하고,

 

월 차이를 계산하기 위해 그 월의 1일인 1월 1일을 구해야한다.

 

 

 

물론 한 주의 시작을 월요일로 할 지, 일요일로 할 지는 각자의 자유다.

 

먼저 TEST_TABLE의 STST_DATE 날짜의 각 주, 월 기준 날짜를 구해보자.

 

SELECT STST_DATE
     , DATE_SUB(STST_DATE, INTERVAL WEEKDAY(STST_DATE) DAY) AS W_DATE
     , DATE_SUB(STST_DATE, INTERVAL (DAY(STST_DATE)-1) DAY) AS M_DATE					
 FROM TEST_TABLE T

 

 

[MySQL] 현재 날짜와의 차이 계산하기 : 일 차, 주 차, 월 차 - 2. 응용하여 주 차, 월 차 구하기

 

 

 

 

이 데이터를 활용해서 TIMESTAMPDIFF 구문에 대입하면,

 

 

SELECT T1.STST_DATE, CURDATE()
     , TIMESTAMPDIFF(DAY, T1.STST_DATE, CURDATE()) AS DIFF_DAY
     , TIMESTAMPDIFF(WEEK, DATE_SUB(STST_DATE, INTERVAL WEEKDAY(STST_DATE) DAY), CURDATE()) AS DIFF_WEEK
     , TIMESTAMPDIFF(MONTH, DATE_SUB(STST_DATE, INTERVAL (DAY(STST_DATE)-1) DAY), CURDATE()) AS DIFF_MONTH
  FROM TEST_TABLE

 

 

원하는 결과를 얻을 수 있다.

 

[MySQL] 현재 날짜와의 차이 계산하기 : 일 차, 주 차, 월 차 - 2. 응용하여 주 차, 월 차 구하기

 

 

 


응용한 결과 한 눈에 살펴보기

 

 

[MySQL] 현재 날짜와의 차이 계산하기 : 일 차, 주 차, 월 차 - 응용한 결과 한 눈에 살펴보기

 

 

728x90
반응형
해당 브라우저에서는 미넴 스킨이 올바르게 동작하지 않을 수 있습니다.