SQL/개념

[MySQL] 날짜/시간 더하기, 빼기

소금깨 2022. 6. 26. 04:03

MySQL에서 datetime 형식에 바로 숫자로 날짜나 시간을 더하거나 뺄 수 없습니다.

(ex. 오늘 날짜에서 하루를 빼기 위해 today-1 하는 경우...)

아래의 함수를 이용하여 날짜/시간을 계산해야 합니다.  

 

1. DATE_ADD or DATE_SUB

 

더하기 

  • DATE_ADD(NOW(), INTERVAL 1 SECOND)
  • DATE_ADD(NOW(), INTERVAL 1 MINUTE)
  • DATE_ADD(NOW(), INTERVAL 1 HOUR)
  • DATE_ADD(NOW(), INTERVAL 1 DAY)
  • DATE_ADD(NOW(), INTERVAL 1 MONTH)
  • DATE_ADD(NOW(), INTERVAL 1 YEAR)
  • DATE_ADD(NOW(), INTERVAL -1 HOUR) 

빼기

  • DATE_SUB(NOW(), INTERVAL 1 SECOND)
  • DATE_SUB(NOW(), INTERVAL 1 MINUTE)
  • DATE_SUB(NOW(), INTERVAL 1 HOUR)
  • DATE_SUB(NOW(), INTERVAL 1 DAY)
  • DATE_SUB(NOW(), INTERVAL 1 MONTH)
  • DATE_SUB(NOW(), INTERVAL 1 YEAR)
  • DATE_SUB(NOW(), INTERVAL -1 HOUR)

 

2. DATEDIFF와 TIMESTAMPDIFF

DATEDIFF : 두 날짜의 차이(단위:日)

TIMESTAMPDIFF : 두 날짜의 차이 (단위: 연, 분기, 월, 주, 일, 시, 분, 초)

 

  • DATEDIFF (날짜1, 날짜2) 
    • 조건 절에서 DATEDIFF(today,yesterday) = 1 이런 식으로 자주 사용합니다. 
  • TIMESTAMPDIFF(단위, 날짜1, 날짜2) 
    • SECOND
    • MINUTE
    • HOUR
    • DAY
    • WEEK
    • MONTH
    • QUARTER : 분기 
    • YEAR

 

---- 기타 알아두면 좋겠지..? 하지만 크게 차이는 없을 듯 싶습니다. 

3. TO_DAYS / FROM_DAYS

: 주어진 날짜를 0000년 부터의 일수로 바꾸는 함수입니다. 

SELECT TO_DAYS('2022-06-25')
FROM books

=> 738696

 

해당 함수를 이용해서 어떻게 날짜를 더하고 빼라고? 라고 하신다면..

FROM_DAYS(n)를 추가로 사용하시면 됩니다. 

 

# 만약 오늘 날짜에서 3일을 더한 후가 몇월 며칠인지 알고싶다.. 하신다면 

SELECT FROM_DAYS(TO_DAYS('2022-06-25')+3)
FROM books

=> 2022-06-28로 계산되어 나옵니다.

혹은 날짜 비교에서도 사용이 가능합니다.

SELECT ...
FROM ...
WHERE TO_DAYS(TODAY) - TO_DAYS(YESTERDAY) = 1