MySQL ๋ ์งํจ์ ์ฝ๊ฒ ๋ฐฐ์ฐ๊ธฐ!
์ด๋ฒ ์์์์๋ MySQL์์ ๋ ์ง๋ฅผ ๋ค๋ฃจ๋ ๋ค์ํ ํจ์๋ค์ ์ฝ๊ณ ์ฌ๋ฏธ์๊ฒ ๋ฐฐ์๋ด
๋๋ค. ํ์ฌ ๋ ์ง์ ์๊ฐ ๊ตฌํ๊ธฐ๋ถํฐ, ๋ ์ง ๋ํ๊ธฐ/๋นผ๊ธฐ, ๋ ๋ ์ง ์ฌ์ด ์ฐจ์ด ๊ณ์ฐ, ๊ทธ๋ฆฌ๊ณ ์ค๋ฌด์์ ์์ฃผ ์ฐ์ด๋ ๋ ์ง ์กฐ๊ฑด ๊ฒ์๊น์ง ์ฐจ๊ทผ์ฐจ๊ทผ ์ค๋ช
ํด์.
๋ชฉ์ฐจ
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
1. ๋ ์ง ํจ์ ์์ํ๊ธฐ [00:00:14]
MySQL์์ ๋ ์ง๋ฅผ ๋ค๋ฃจ๋ ํจ์๋ค์ ์ด๋ฆ๋ง ๋ด๋ ์ด๋ค ๊ธฐ๋ฅ์ธ์ง ์ฝ๊ฒ ์ ์ ์์ด์. ์๋ฅผ ๋ค์ด, NOW()๋ ํ์ฌ ๋ ์ง์ ์๊ฐ์ ๋ชจ๋ ์๋ ค์ฃผ๊ณ , CURRENT_DATE()๋ ์ค๋ ๋ ์ง๋ง, CURRENT_TIME()์ ํ์ฌ ์๊ฐ๋ง ์๋ ค์ค๋๋ค.
2. ํ์ฌ ๋ ์ง์ ์๊ฐ ๊ตฌํ๊ธฐ (NOW, CURRENT_DATE, CURRENT_TIME) [00:00:43]
โข
NOW(): ํ์ฌ ๋ ์ง์ ์๊ฐ์ "2025-04-30 10:37:55" ๊ฐ์ ํ์์ผ๋ก ๋ณด์ฌ์ค์.
โข
CURRENT_DATE(): ์ค๋ ๋ ์ง๋ง "2025-04-30" ํ์์ผ๋ก ๋ฐํํฉ๋๋ค.
โข
CURRENT_TIME(): ํ์ฌ ์๊ฐ๋ง "10:37:55" ํ์์ผ๋ก ์๋ ค์ค์.
์๋ฅผ ๋ค์ด, ์ง๊ธ์ด 4์ 30์ผ ์ค์ 10์ 37๋ถ์ด๋ผ๋ฉด ๊ฐ๊ฐ ์ด๋ ๊ฒ ๋์์.
3. ๋ ์ง์์ ์ฐ๋, ์, ์ผ ์ถ์ถํ๊ธฐ (YEAR, MONTH, DAY) [00:01:16]
๋ ์ง ๋ฐ์ดํฐ์์ ์ฐ๋, ์, ์ผ๋ง ๋ฐ๋ก ๋ฝ์๋ด๊ณ ์ถ์ ๋ ์๋๋ค.
โข
YEAR(date): ์ฐ๋๋ง ์ถ์ถ (์: 2025)
โข
MONTH(date): ์๋ง ์ถ์ถ (์: 4)
โข
DAY(date): ์ผ๋ง ์ถ์ถ (์: 30)
์์) ์
์ฌ์ผ์์ ์ฐ๋, ์, ์ผ์ ๊ฐ๊ฐ ๋ฝ์์ ์กฐํํ ์ ์์ด์.
4. ๋ ์ง ๋ํ๊ณ ๋นผ๊ธฐ (DATE_ADD, DATE_SUB) [00:01:40]
๋ ์ง์ ๊ธฐ๊ฐ์ ๋ํ๊ฑฐ๋ ๋นผ๋ ํจ์์
๋๋ค.
โข
DATE_ADD(date, INTERVAL n unit): ๋ ์ง์ n ๋จ์(๋
, ์, ์ผ ๋ฑ)๋ฅผ ๋ํด์.
โข
DATE_SUB(date, INTERVAL n unit): ๋ ์ง์์ n ๋จ์๋ฅผ ๋นผ์.
์) ์ค๋๋ถํฐ 5๋
๋ค ๋ ์ง ๊ตฌํ๊ธฐ:
SELECT DATE_ADD(NOW(), INTERVAL 5 YEAR);
SQL
๋ณต์ฌ
๋๋ ์ข
๊ฐ์ผ์์ 10์ผ ์ ๋ ์ง ๊ตฌํ๊ธฐ:
SELECT DATE_SUB('2025-09-15', INTERVAL 10 DAY);
SQL
๋ณต์ฌ
5. ๋ ๋ ์ง ์ฌ์ด ์ฐจ์ด ๊ตฌํ๊ธฐ (DATEDIFF, TIMESTAMPDIFF) [00:20:27]
โข
DATEDIFF(date1, date2): ๋ ๋ ์ง ์ฌ์ด์ ์ผ(day) ๋จ์ ์ฐจ์ด๋ฅผ ๊ตฌํฉ๋๋ค.
โข
TIMESTAMPDIFF(unit, date1, date2): ์ฐ๋, ์, ์ผ ๋ฑ ์ํ๋ ๋จ์๋ก ๋ ๋ ์ง ์ฐจ์ด๋ฅผ ๊ตฌํ ์ ์์ด์.
์) ์
์ฌ์ผ๋ถํฐ ์ค๋๊น์ง ๋ช ๋
์ด ์ง๋ฌ๋์ง ๊ตฌํ๊ธฐ:
SELECT TIMESTAMPDIFF(YEAR, ์
์ฌ์ผ์, CURDATE()) AS ๊ทผ์์ฐ์ FROM employees;
SQL
๋ณต์ฌ
6. ์ค๋ฌด ์์ : ์
์ฌ์ผ ๊ธฐ์ค ๊ทผ์์ฐ์ ๊ตฌํ๊ธฐ [00:11:39]
โข
์
์ฌ์ผ๋ก๋ถํฐ 30๋
์ด์ ๊ทผ์ํ ์ฌ์์ ์ฐพ๋ ์ฟผ๋ฆฌ ์์ฑ๋ฒ์ ๋ฐฐ์์.
โข
๋ฐฉ๋ฒ 1: ์
์ฌ์ผ์ 30๋
์ ๋ํ ๋ ์ง๊ฐ ์ค๋๋ณด๋ค ์ด์ ์ธ์ง ๋น๊ต
โข
๋ฐฉ๋ฒ 2: ํ์ฌ ์ฐ๋์์ ์
์ฌ ์ฐ๋๋ฅผ ๋นผ์ 30 ์ด์์ธ์ง ํ์ธ
์)
SELECT * FROM employees WHERE TIMESTAMPDIFF(YEAR, ์
์ฌ์ผ์, CURDATE()) >= 30;
SQL
๋ณต์ฌ
7. ์กฐ๊ฑด ๊ฒ์ ์์ : ์ด๋ฒ ๋ฌ ์
์ฌ์, ์์ผ์ ์กฐํํ๊ธฐ [00:06:42]
โข
์ด๋ฒ ๋ฌ์ ์
์ฌํ ์ฌ์ ์ฐพ๊ธฐ:
SELECT * FROM employees WHERE MONTH(์
์ฌ์ผ์) = MONTH(CURDATE());
SQL
๋ณต์ฌ
โข
์ด๋ฒ ๋ฌ ์์ผ์ธ ์ฌ์ ์ฐพ๊ธฐ:
SELECT * FROM employees WHERE MONTH(์์ผ) = MONTH(CURDATE());
SQL
๋ณต์ฌ
์ด๋ ๊ฒ ์๋ง ๋น๊ตํด์ ๊ฐ๋จํ ์กฐ๊ฑด ๊ฒ์ ๊ฐ๋ฅ!
8. ๋ฌธ์์ด์ ๋ ์ง๋ก ๋ณํํ๊ธฐ (STR_TO_DATE) [00:27:10]
๋ฌธ์์ด๋ก ๋ ๋ ์ง๋ฅผ MySQL ๋ ์ง ํ์
์ผ๋ก ๋ฐ๊ฟ์ฃผ๋ ํจ์์
๋๋ค.
์) '2025-09-15' ๊ฐ์ ๋ฌธ์์ด์ ๋ ์ง๋ก ๋ณํ:
SELECT STR_TO_DATE('2025-09-15', '%Y-%m-%d');
SQL
๋ณต์ฌ
์ด๊ฑธ ํ์ฉํด ๋ ์ง ๊ณ์ฐ์ ํ ์ ์์ด์.
9. ๋ ์ง ๊ฐ๊ฒฉ ๊ณ์ฐ๊ณผ ์ ๋ ฌ ์ค์ต [00:35:07]
โข
๋ถ์๋ณ ๊ทผ๋ฌด ๊ธฐ๊ฐ ๊ณ์ฐํ๊ธฐ
โข
์ข
๋ฃ์ผ์ด 9999-12-31(์ข
๋ฃ ์ ๋จ)์ธ ๊ฒฝ์ฐ ์ ์ธํ๊ธฐ
โข
TIMESTAMPDIFF๋ก ์ฐ ๋จ์ ๊ทผ์ ์ฐ์ ๊ตฌํ๊ณ ๋ด๋ฆผ์ฐจ์ ์ ๋ ฌํ๊ธฐ
์)
SELECT ๋ถ์, TIMESTAMPDIFF(YEAR, ์์์ผ, ์ข
๋ฃ์ผ) AS ๊ทผ์์ฐ์
FROM ๋ถ์๊ทผ๋ฌด์ด๋ ฅ
WHERE ์ข
๋ฃ์ผ <> '9999-12-31'
ORDER BY ๊ทผ์์ฐ์ DESC;
SQL
๋ณต์ฌ
10. ๋ง๋ฌด๋ฆฌ ์์ฝ [00:41:36]
โข
MySQL ๋ ์ง ํจ์๋ ํ์ฌ ๋ ์ง/์๊ฐ ์กฐํ, ๋ ์ง ๋ถํด, ๋ ์ง ๋ํ๊ธฐ/๋นผ๊ธฐ, ๋ ์ง ์ฐจ์ด ๊ณ์ฐ ๋ฑ ๋ค์ํด์.
โข
์ค๋ฌด์์ ์
์ฌ์ผ ๊ธฐ์ค ๊ทผ์์ฐ์, ํน์ ๊ธฐ๊ฐ ์กฐ๊ฑด ๊ฒ์ ๋ฑ์ ์์ฃผ ์ฐ์
๋๋ค.
โข
STR_TO_DATE๋ก ๋ฌธ์์ด์ ๋ ์ง๋ก ๋ณํํด ๋ ์ง ๊ณ์ฐ์ ํ์ฉํ ์ ์์ด์.
โข
TIMESTAMPDIFF๋ ๋จ์๋ฅผ ์ง์ ํด ์ฐ๋, ์, ์ผ ๋จ์ ์ฐจ์ด๋ฅผ ๊ตฌํ ์ ์์ด ๋งค์ฐ ์ ์ฉํฉ๋๋ค.
๋ง์น๋ฉฐ
์ด๋ฒ ์์์ผ๋ก MySQL ๋ ์ง ํจ์์ ๊ธฐ๋ณธ๋ถํฐ ์ค๋ฌด ํ์ฉ๊น์ง ํํํ๊ฒ ์ตํ ์ ์์์ฃ ? ๋ ์ง ๊ณ์ฐ์ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์์
์์ ์ ๋ง ์์ฃผ ์ฐ์ด๋, ์ค๋ ๋ฐฐ์ด ํจ์๋ค์ ๊ผญ ์ฐ์ตํด๋ณด์ธ์! ๊ถ๊ธํ ์ ์์ผ๋ฉด ๋๊ธ๋ก ๋จ๊ฒจ์ฃผ์๊ณ , ๋ค์ ์์๋ ๊ธฐ๋ํด ์ฃผ์ธ์~ 
