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
'SQL > 개념' 카테고리의 다른 글
[MySQL] DATETIME 형식에서 특정 기간을 조회할 때 (0) | 2022.07.01 |
---|---|
[SQL 개념] Driving Table, Driven Table이란? (0) | 2022.06.29 |
[MySQL] SELF-JOIN (0) | 2022.06.10 |
[TIL] MySQL에서 위도-경도 거리 계산하기 (0) | 2022.06.09 |
[MySQL] DELETE JOIN 번역 (0) | 2022.05.28 |