Search

MySQL ๋‚ ์งœํ•จ์ˆ˜

MySQL ๋‚ ์งœํ•จ์ˆ˜ ์‰ฝ๊ฒŒ ๋ฐฐ์šฐ๊ธฐ!

์ด๋ฒˆ ์˜์ƒ์—์„œ๋Š” MySQL์—์„œ ๋‚ ์งœ๋ฅผ ๋‹ค๋ฃจ๋Š” ๋‹ค์–‘ํ•œ ํ•จ์ˆ˜๋“ค์„ ์‰ฝ๊ณ  ์žฌ๋ฏธ์žˆ๊ฒŒ ๋ฐฐ์›Œ๋ด…๋‹ˆ๋‹ค. ํ˜„์žฌ ๋‚ ์งœ์™€ ์‹œ๊ฐ„ ๊ตฌํ•˜๊ธฐ๋ถ€ํ„ฐ, ๋‚ ์งœ ๋”ํ•˜๊ธฐ/๋นผ๊ธฐ, ๋‘ ๋‚ ์งœ ์‚ฌ์ด ์ฐจ์ด ๊ณ„์‚ฐ, ๊ทธ๋ฆฌ๊ณ  ์‹ค๋ฌด์—์„œ ์ž์ฃผ ์“ฐ์ด๋Š” ๋‚ ์งœ ์กฐ๊ฑด ๊ฒ€์ƒ‰๊นŒ์ง€ ์ฐจ๊ทผ์ฐจ๊ทผ ์„ค๋ช…ํ•ด์š”.

๋ชฉ์ฐจ

1.
๋‚ ์งœ ํ•จ์ˆ˜ ์‹œ์ž‘ํ•˜๊ธฐ [00:00:14]
2.
ํ˜„์žฌ ๋‚ ์งœ์™€ ์‹œ๊ฐ„ ๊ตฌํ•˜๊ธฐ (NOW, CURRENT_DATE, CURRENT_TIME) [00:00:43]
3.
๋‚ ์งœ์—์„œ ์—ฐ๋„, ์›”, ์ผ ์ถ”์ถœํ•˜๊ธฐ (YEAR, MONTH, DAY) [00:01:16]
4.
๋‚ ์งœ ๋”ํ•˜๊ณ  ๋นผ๊ธฐ (DATE_ADD, DATE_SUB) [00:01:40]
5.
๋‘ ๋‚ ์งœ ์‚ฌ์ด ์ฐจ์ด ๊ตฌํ•˜๊ธฐ (DATEDIFF, TIMESTAMPDIFF) [00:20:27]
6.
์‹ค๋ฌด ์˜ˆ์ œ: ์ž…์‚ฌ์ผ ๊ธฐ์ค€ ๊ทผ์†์—ฐ์ˆ˜ ๊ตฌํ•˜๊ธฐ [00:11:39]
7.
์กฐ๊ฑด ๊ฒ€์ƒ‰ ์˜ˆ์ œ: ์ด๋ฒˆ ๋‹ฌ ์ž…์‚ฌ์ž, ์ƒ์ผ์ž ์กฐํšŒํ•˜๊ธฐ [00:06:42]
8.
๋ฌธ์ž์—ด์„ ๋‚ ์งœ๋กœ ๋ณ€ํ™˜ํ•˜๊ธฐ (STR_TO_DATE) [00:27:10]
9.
๋‚ ์งœ ๊ฐ„๊ฒฉ ๊ณ„์‚ฐ๊ณผ ์ •๋ ฌ ์‹ค์Šต [00:35:07]
10.
๋งˆ๋ฌด๋ฆฌ ์š”์•ฝ [00:41:36]

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 ๋‚ ์งœ ํ•จ์ˆ˜์˜ ๊ธฐ๋ณธ๋ถ€ํ„ฐ ์‹ค๋ฌด ํ™œ์šฉ๊นŒ์ง€ ํƒ„ํƒ„ํ•˜๊ฒŒ ์ตํž ์ˆ˜ ์žˆ์—ˆ์ฃ ? ๋‚ ์งœ ๊ณ„์‚ฐ์€ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ž‘์—…์—์„œ ์ •๋ง ์ž์ฃผ ์“ฐ์ด๋‹ˆ, ์˜ค๋Š˜ ๋ฐฐ์šด ํ•จ์ˆ˜๋“ค์„ ๊ผญ ์—ฐ์Šตํ•ด๋ณด์„ธ์š”! ๊ถ๊ธˆํ•œ ์  ์žˆ์œผ๋ฉด ๋Œ“๊ธ€๋กœ ๋‚จ๊ฒจ์ฃผ์‹œ๊ณ , ๋‹ค์Œ ์˜์ƒ๋„ ๊ธฐ๋Œ€ํ•ด ์ฃผ์„ธ์š”~