데이터 분석 19일차
| 연산 | SQL | 코드 |
|---|---|---|
| 하루 더하기 | SELECT DATE_ADD('2024-03-17', INTERVAL 1 DAY); | '2024-03-18' |
| 일주일 더하기 | SELECT DATE_ADD('2024-03-17', INTERVAL 7 DAY); | '2024-03-24' |
| 한 달 더하기 | SELECT DATE_ADD('2024-03-17', INTERVAL 1 MONTH); | '2024-04-17' |
| 1년 더하기 | SELECT DATE_ADD('2024-03-17', INTERVAL 1 YEAR); | '2025-03-17' |
💡 + INTERVAL을 사용한 간단한 표현
SELECT '2024-03-17' + INTERVAL 1 DAY; -- 2024-03-18
| 연산 | SQL | 코드 |
|---|---|---|
| 하루 빼기 (DATE_SUB) | SELECT DATE_SUB('2024-03-17', INTERVAL 1 DAY); | '2024-03-16' |
| 하루 빼기 (DATE_ADD에서 -1 사용) | SELECT DATE_ADD('2024-03-17', INTERVAL -1 DAY); | '2024-03-16' |
| 일주일 빼기 | SELECT DATE_SUB('2024-03-17', INTERVAL 7 DAY); '2024-03-10' | |
| 한 달 빼기 | SELECT DATE_SUB('2024-03-17', INTERVAL 1 MONTH); | '2024-02-17' |
💡 - INTERVAL을 사용한 간단한 표현
SELECT '2024-03-17' - INTERVAL 1 DAY; -- 2024-03-16
| 연산 | SQL 코드 |
|---|---|
| 현재 날짜에서 하루 더하기 | SELECT DATE_ADD(CURDATE(), INTERVAL 1 DAY); |
| 현재 날짜에서 한 달 빼기 | SELECT DATE_SUB(CURDATE(), INTERVAL 1 MONTH); |
| 현재 날짜에서 1년 더하기 | SELECT DATE_ADD(NOW(), INTERVAL 1 YEAR); |
📍 JOIN에서 DATE_ADD()와 DATE_SUB()를 사용할 때 주의할 점
| recorddate | temperature |
|---|---|
| 2024-03-17 | 15 |
| 2024-03-18 | 18 |
| 2024-03-19 | 20 |
| 2024-03-20 | 22 |
🔹 (1) 하루 더한 값으로 JOIN
SELECT * FROM weather a JOIN weather b ON a.recorddate = DATE_ADD(b.recorddate, INTERVAL 1 DAY);
- b.recorddate + 1일이 a.recorddate와 같은 행을 매칭
- 즉, b의 날짜가 a보다 하루 전날 데이터를 가져옴
| recorddate_a (a) | temperature_a (a) | recorddate_b (b) | temperature_b (b) |
|---|---|---|---|
| 2024-03-18 | 18 | 2024-03-17 | 15 |
| 2024-03-19 | 20 | 2024-03-18 | 18 |
| 2024-03-20 | 22 | 2024-03-19 | 20 |
📌 해석: