๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
Basics/SQL

[MySQL, MariaDB] ๋‚ ์งœ ์ฐจ์ด, ๋…„์ฐจ ์—ฐ๋„ ๋ถ„๊ธฐ ์ฐจ์ด ๊ตฌํ•˜๊ธฐ ์ฟผ๋ฆฌ ์ด์ •๋ฆฌTIMESTAMPDIFF ์™€ DATEDIFF ์˜ˆ์ œ

by IworldT 2022. 7. 18.
๋ฐ˜์‘ํ˜•

๋‘ ๋‚ ์งœ ์‚ฌ์ด์˜ ๋ถ„, ์ดˆ, ์‹œ, ์ผ, ์ฃผ, ์›”, ๋ถ„๊ธฐ, ์—ฐ๋„ ๊นŒ์ง€์˜ ์ฐจ์ด๋ฅผ ์†์‰ฝ๊ฒŒ ๊ตฌํ•ด์ฃผ๋Š” SQL ํ•จ์ˆ˜๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

๋ฐ”๋กœ TIMESTAMPDIFF์ธ๋ฐ์š”!

 

TIMESTAMPDIFF

TIMESTAMPDIFF ํ™œ์šฉ ์˜ˆ์ œ

์˜ˆ๋ฅผ๋“ค์–ด 2021๋…„ 1์›” 1์ผ๊ณผ 2022๋…„1์›”1์ผ ์‚ฌ์ด์— ๋ช‡ ๋ถ„์ด ์กด์žฌํ•˜๋Š”์ง€, ๋ช‡ ์ดˆ๊ฐ€ ์กด์žฌํ•˜๋Š”์ง€, ๋ช‡ ์‹œ๊ฐ„์˜ ์ฐจ์ด๊ฐ€ ๋‚˜๋Š”์ง€,

๊ทธ๋ฆฌ๊ณ  ๋ฉฐ์น (365์ผ), ๋ช‡์ฃผ, ๋ช‡๋‹ฌ(12๊ฐœ์›”), ๋ช‡ ๋ถ„๊ธฐ(4๋ถ„๊ธฐ), ๋ช‡๋…„ ์ฐจ์ด๊ฐ€ ๋‚˜๋Š”์ง€ ๊ตฌํ•ด์ฃผ๋Š” ํ•จ์ˆ˜์ž…๋‹ˆ๋‹ค.

 

์ด ํ•จ์ˆ˜๋ฅผ ํ†ตํ•ด์„œ ์–ด๋– ํ•œ ์‚ฌ๋žŒ์ด ์ž…์‚ฌ์ผ๋กœ๋ถ€ํ„ฐ ํ˜„์žฌ๊นŒ์ง€ ์ผํ•œ ์ผ์ˆ˜๋‚˜ ์—ฐ์ฐจ ๋“ฑ์„ ๊ตฌํ•  ์ˆ˜ ์žˆ๊ฒ ์Šต๋‹ˆ๋‹ค.

๋˜ํ•œ ๋””๋ฐ์ด, ์–ด๋– ํ•œ ๋‚  ๊นŒ์ง€ ๋‚จ์€ ์ผ์ˆ˜๋‚˜ ์‹œ๊ฐ„์„ ๊ตฌํ•ด์ค„ ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.

์ดˆ, ๋ถ„, ์‹œ๊ฐ„, ์ผ์ž, ์ฃผ์ฐจ, ์›”์ฐจ, ๋ถ„๊ธฐ, ์—ฐ์ฐจ ๋‹ค์–‘ํ•˜๊ฒŒ ๊ตฌํ•ด์ฃผ๊ธฐ ๋•Œ๋ฌธ์— ํ™œ์šฉ๋„๊ฐ€ ๊ต‰์žฅํžˆ ๋†’์€ SQL ์ฟผ๋ฆฌ ํ•จ์ˆ˜ ์ž…๋‹ˆ๋‹ค.

 

TIMESTAMPDIFF SQL ์ฟผ๋ฆฌ

1. ๋‘ ๋‚ ์งœ ์‚ฌ์ด์˜ ์ดˆ ์ฐจ์ด ๊ตฌํ•˜๊ธฐ

์ดˆ ์ฐจ์ด ๊ตฌํ•˜๋Š” ์ฟผ๋ฆฌ

SELECT TIMESTAMPDIFF(SECOND, '20220718', '20230101');
--SELECT TIMESTAMPDIFF(SECOND, ์‹œ์ž‘์ผ, ์ข…๋ฃŒ์ผ);

์ €๋Š” ์˜ค๋Š˜๋ถ€ํ„ฐ ๋‚ด๋…„ 1์›”1์ผ๊นŒ์ง€ ๋‚จ์€ ์ดˆ๋ฅผ ๊ณ„์‚ฐํ•ด๋ณด๋ ค๊ณ  ์œ„์™€ ๊ฐ™์€ ์ฟผ๋ฆฌ๋ฅผ ์ž‘์„ฑํ•ด๋ณด์•˜์Šต๋‹ˆ๋‹ค.

๋ชจ๋“  ๋‚ ์งœ ๊ณ„์‚ฐ ๊ธฐ์ค€์€ 00์‹œ00๋ถ„00์ดˆ ๊ธฐ์ค€์ž…๋‹ˆ๋‹ค.

 

์‹คํ–‰๊ฒฐ๊ณผ

๋‚ ์งœ ์ฐจ์ด, ๋…„์ฐจ ์—ฐ๋„ ๋ถ„๊ธฐ ์ฐจ์ด ๊ตฌํ•˜๊ธฐ ์ฟผ๋ฆฌ
๋‚ ์งœ ์ฐจ์ด, ๋…„์ฐจ ์—ฐ๋„ ๋ถ„๊ธฐ ์ฐจ์ด ๊ตฌํ•˜๊ธฐ ์ฟผ๋ฆฌ

 

1์–ต4428๋งŒ8๋ฐฑ ์ดˆ๊ฐ€ ๋‚จ์•˜๋„ค์š”. ์ƒ๊ฐ๋ณด๋‹ค ์–ผ๋งˆ ์•ˆ๋˜๋Š” ์ˆ˜์น˜ ๊ฐ™๊ธฐ๋„ ํ•ฉ๋‹ˆ๋‹ค.

 ํŠน์ • ์‹œ๊ฐ„๊ณผ ์ดˆ ๊นŒ์ง€๋„ ์ง€์ •ํ•ด์ค„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 

ํŠน์ • ์‹œ๊ฐ„ ์ฐจ์ด์˜ ์ดˆ ๊ตฌํ•˜๋Š” ์ฟผ๋ฆฌ

SELECT TIMESTAMPDIFF(SECOND, '2022-07-18 10:00:00', '2023-01-01 00:00:00');

 

์‹คํ–‰๊ฒฐ๊ณผ

๋‚ ์งœ ์ฐจ์ด, ๋…„์ฐจ ์—ฐ๋„ ๋ถ„๊ธฐ ์ฐจ์ด ๊ตฌํ•˜๊ธฐ ์ฟผ๋ฆฌ
๋‚ ์งœ ์ฐจ์ด, ๋…„์ฐจ ์—ฐ๋„ ๋ถ„๊ธฐ ์ฐจ์ด ๊ตฌํ•˜๊ธฐ ์ฟผ๋ฆฌ

 

๋‚ ์งœ ํ˜•์‹๋งŒ ์œ„์™€ ๊ฐ™์ด ๋งž์ถ”์–ด ์ฃผ์‹œ๋ฉด ํŠน์ • ๋‚ ์งœ ์‚ฌ์ด์˜ ์ดˆ ์ฐจ์ด๋ฅผ ๊ตฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ด๋Š” ์•„๋ž˜ ๋ถ„, ์‹œ๊ฐ„, ๋ถ„๊ธฐ ๋“ฑ ๋ชจ๋“  ๊ฒฝ์šฐ์—์„œ๋„ ๊ฐ€๋Šฅํ•œ ํ˜•ํƒœ์ž…๋‹ˆ๋‹ค.

์‹œ๊ฐ„์„ ์ง€์ •ํ•ด์ฃผ๊ณ  ์‹ถ์œผ์‹œ๋‹ค๋ฉด, ๋‚ ์งœ ํ˜•์‹์„ 'YYYY-MM-DD ์‹œ๊ฐ„:๋ถ„:์ดˆ' ๋กœ ๋งž์ถ”์–ด์ฃผ์‹œ๊ธฐ ๋ฐ”๋ž๋‹ˆ๋‹ค.

 

2. ๋‘ ๋‚ ์งœ ์‚ฌ์ด์˜ ๋ถ„ ์ฐจ์ด ๊ตฌํ•˜๊ธฐ

๋ถ„ ์ฐจ์ด ๊ตฌํ•˜๋Š” ์ฟผ๋ฆฌ

SELECT TIMESTAMPDIFF(MINUTE, '20220718', '20230101');
SELECT TIMESTAMPDIFF(MINUTE, ์‹œ์ž‘์ผ, ์ข…๋ฃŒ์ผ);

 

์‹คํ–‰๊ฒฐ๊ณผ

๋‚ ์งœ ์ฐจ์ด, ๋…„์ฐจ ์—ฐ๋„ ๋ถ„๊ธฐ ์ฐจ์ด ๊ตฌํ•˜๊ธฐ ์ฟผ๋ฆฌ
๋‚ ์งœ ์ฐจ์ด, ๋…„์ฐจ ์—ฐ๋„ ๋ถ„๊ธฐ ์ฐจ์ด ๊ตฌํ•˜๊ธฐ ์ฟผ๋ฆฌ

์•„๊นŒ์™€ ๊ฐ™์ด ์˜ค๋Š˜๋ถ€ํ„ฐ ๋‚ด๋…„ 1์›” 1์ผ๊นŒ์ง€ ๋‚จ์€ ๋ถ„์„ ๊ตฌํ•ด๋ณด์•˜์Šต๋‹ˆ๋‹ค.

์ดˆ๋ฅผ ๊ตฌํ•  ๋•Œ์™€ ๋˜‘๊ฐ™์ด ๋ถ„ ์ดˆ ์‹œ๊ฐ„์„ ์ง€์ •ํ•ด์ฃผ์…”๋„ ๋ฉ๋‹ˆ๋‹ค.

 

3. ๋‘ ๋‚ ์งœ ์‚ฌ์ด์˜ ์‹œ๊ฐ„ ์ฐจ์ด ๊ตฌํ•˜๊ธฐ

์‹œ๊ฐ„ ์ฐจ์ด ๊ตฌํ•˜๋Š” ์ฟผ๋ฆฌ

SELECT TIMESTAMPDIFF(HOUR, '20220718', '20230101');
SELECT TIMESTAMPDIFF(HOUR, ์‹œ์ž‘์ผ, ์ข…๋ฃŒ์ผ);

 

์‹คํ–‰๊ฒฐ๊ณผ

๋‚ ์งœ ์ฐจ์ด, ๋…„์ฐจ ์—ฐ๋„ ๋ถ„๊ธฐ ์ฐจ์ด ๊ตฌํ•˜๊ธฐ ์ฟผ๋ฆฌ
๋‚ ์งœ ์ฐจ์ด, ๋…„์ฐจ ์—ฐ๋„ ๋ถ„๊ธฐ ์ฐจ์ด ๊ตฌํ•˜๊ธฐ ์ฟผ๋ฆฌ

 

 

4. ๋‘ ๋‚ ์งœ ์‚ฌ์ด์˜ ์ผ ์ฐจ์ด ๊ตฌํ•˜๊ธฐ

์ผ ์ฐจ์ด ๊ตฌํ•˜๋Š” ์ฟผ๋ฆฌ

SELECT TIMESTAMPDIFF(DAY, '20220718', '20230101');
SELECT TIMESTAMPDIFF(DAY, ์‹œ์ž‘์ผ, ์ข…๋ฃŒ์ผ);

 

์‹คํ–‰๊ฒฐ๊ณผ

๋‚ ์งœ ์ฐจ์ด, ๋…„์ฐจ ์—ฐ๋„ ๋ถ„๊ธฐ ์ฐจ์ด ๊ตฌํ•˜๊ธฐ ์ฟผ๋ฆฌ
๋‚ ์งœ ์ฐจ์ด, ๋…„์ฐจ ์—ฐ๋„ ๋ถ„๊ธฐ ์ฐจ์ด ๊ตฌํ•˜๊ธฐ ์ฟผ๋ฆฌ

 

์ด์ฏค๋˜๋‹ˆ ๊ถ๊ธˆํ•œ ์ ์ด ์ƒ๊ฒผ์Šต๋‹ˆ๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด ๋‚ ์งœ ์ฐจ์ด๊ฐ€ 1์ผ ํ•˜๊ณ ๋„ 12์‹œ๊ฐ„์ด๋ผ๋ฉด, ๊ฒฐ๊ณผ๋Š” 1์ผ๋กœ ๋‚˜์˜ฌ๊นŒ์š”? ์•„๋‹ˆ๋ฉด 2์ผ๋กœ ๋‚˜์˜ฌ๊นŒ์š”?

 

์ผ์ˆ˜ ๊ตฌํ•˜๋Š” ์ฟผ๋ฆฌ

SELECT TIMESTAMPDIFF(HOUR, '2022-07-18 00:00:00', '2022-07-19 12:00:00') as h,
TIMESTAMPDIFF(DAY, '2022-07-18 00:00:00', '2022-07-19 12:00:00') as d;

7์›” 18์ผ 00์‹œ๋ถ€ํ„ฐ 19์ผ 12์‹œ๊นŒ์ง€์˜ ์‹œ๊ฐ„ ์ฐจ์ด์™€ ์ผ์ˆ˜ ์ฐจ์ด๋ฅผ ๊ตฌํ•˜๋Š” ์ฟผ๋ฆฌ์ž…๋‹ˆ๋‹ค.

 

์‹คํ–‰๊ฒฐ๊ณผ

๋‚ ์งœ ์ฐจ์ด, ๋…„์ฐจ ์—ฐ๋„ ๋ถ„๊ธฐ ์ฐจ์ด ๊ตฌํ•˜๊ธฐ ์ฟผ๋ฆฌ
๋‚ ์งœ ์ฐจ์ด, ๋…„์ฐจ ์—ฐ๋„ ๋ถ„๊ธฐ ์ฐจ์ด ๊ตฌํ•˜๊ธฐ ์ฟผ๋ฆฌ

๋ณด์‹œ๋Š” ๊ฒƒ์ฒ˜๋Ÿผ ๋‘ ๋‚ ์งœ ์‚ฌ์ด์˜ ์‹œ๊ฐ„์€ 36์‹œ๊ฐ„์œผ๋กœ 1์ผ ํ•˜๊ณ ๋„ 12์‹œ๊ฐ„์ด ๋” ์žˆ์œผ๋‚˜,

๋ฐ˜์˜ฌ๋ฆผ์„ ํ•˜์ง€ ์•Š๊ณ  ์‹œ๊ฐ„์„ ๋ฒ„๋ ค 1์ผ๋กœ ์ถœ๋ ฅํ•ด์ฃผ๋Š” ๊ฒƒ์„ ํ™•์ธํ•˜์‹ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

1์ผ ํ•˜๊ณ ๋„ 23์‹œ๊ฐ„์ด๋ผ๊ณ  ํ•ด๋„ ์ผ์ˆ˜ ์ฐจ์ด ๊ฒฐ๊ณผ๋Š” ๋˜‘๊ฐ™์ด 1์ผ์ž…๋‹ˆ๋‹ค.

 

5. ๋‘ ๋‚ ์งœ ์‚ฌ์ด์˜ ์ฃผ ์ฐจ์ด ๊ตฌํ•˜๊ธฐ

์ฃผ ์ฐจ์ด ๊ตฌํ•˜๋Š” ์ฟผ๋ฆฌ

SELECT TIMESTAMPDIFF(WEEK, '20220718', '20230101');

 

์‹คํ–‰๊ฒฐ๊ณผ

๋‚ ์งœ ์ฐจ์ด, ๋…„์ฐจ ์—ฐ๋„ ๋ถ„๊ธฐ ์ฐจ์ด ๊ตฌํ•˜๊ธฐ ์ฟผ๋ฆฌ
๋‚ ์งœ ์ฐจ์ด, ๋…„์ฐจ ์—ฐ๋„ ๋ถ„๊ธฐ ์ฐจ์ด ๊ตฌํ•˜๊ธฐ ์ฟผ๋ฆฌ

 

์ž ๊น, ์ƒˆํ•ด๊นŒ์ง€ 23์ฃผ๋ฐ–์— ๋‚จ์ง€ ์•Š์•˜๋‹ค๊ตฌ์š”..?

 

6. ๋‘ ๋‚ ์งœ ์‚ฌ์ด์˜ ์›” ์ฐจ์ด ๊ตฌํ•˜๊ธฐ

๊ฐœ์›” ์ˆ˜ ๊ตฌํ•˜๋Š” ์ฟผ๋ฆฌ

SELECT TIMESTAMPDIFF(MONTH, '20220718', '20230101');

22๋…„ 7์›” 18์ผ๋ถ€ํ„ฐ 23๋…„ 1์›” 1์ผ๊นŒ์ง€์˜ ์›” ์ฐจ์ด๋ฅผ ๊ตฌํ•˜๋Š” ์ฟผ๋ฆฌ์ž…๋‹ˆ๋‹ค.

8,9,10,11,12 ์ด 5๊ฐœ์›”์ด ์ถœ๋ ฅ๋  ๊ฒƒ์œผ๋กœ ์˜ˆ์ƒ๋˜๋Š”๋ฐ์š”.

 

์‹คํ–‰๊ฒฐ๊ณผ

๋‚ ์งœ ์ฐจ์ด, ๋…„์ฐจ ์—ฐ๋„ ๋ถ„๊ธฐ ์ฐจ์ด ๊ตฌํ•˜๊ธฐ ์ฟผ๋ฆฌ
๋‚ ์งœ ์ฐจ์ด, ๋…„์ฐจ ์—ฐ๋„ ๋ถ„๊ธฐ ์ฐจ์ด ๊ตฌํ•˜๊ธฐ ์ฟผ๋ฆฌ

๋งž์Šต๋‹ˆ๋‹ค. ๋‘ ๋‚ ์งœ ์ฐจ์ด๊ฐ€ 5๊ฐœ์›” ํ•˜๊ณ ๋„ 2์ฃผ ์ •๋„ ๋„˜์Šต๋‹ˆ๋‹ค.

๊ทธ๋Ÿฌ๋ฏ€๋กœ ์œ„์˜ ๊ณ„์‚ฐ ๊ฒฐ๊ณผ์ฒ˜๋Ÿผ ๋‚˜๋จธ์ง€๋Š” ๋ฒ„๋ฆฌ๊ณ  5 ๋งŒ์„ ์ถœ๋ ฅํ•ด์ค๋‹ˆ๋‹ค.

 

 

7. ๋‘ ๋‚ ์งœ ์‚ฌ์ด์˜ ๋ถ„๊ธฐ ์ฐจ์ด ๊ตฌํ•˜๊ธฐ

๋ถ„๊ธฐ ์ฐจ์ด ๊ตฌํ•˜๋Š” ์ฟผ๋ฆฌ

SELECT TIMESTAMPDIFF(QUARTER, '20220718', '20230101');

 

์‹คํ–‰๊ฒฐ๊ณผ

๋‚ ์งœ ์ฐจ์ด, ๋…„์ฐจ ์—ฐ๋„ ๋ถ„๊ธฐ ์ฐจ์ด ๊ตฌํ•˜๊ธฐ ์ฟผ๋ฆฌ
๋‚ ์งœ ์ฐจ์ด, ๋…„์ฐจ ์—ฐ๋„ ๋ถ„๊ธฐ ์ฐจ์ด ๊ตฌํ•˜๊ธฐ ์ฟผ๋ฆฌ

 

ํ•˜๋ฐ˜๊ธฐ 1๋ถ„๊ธฐ๋งŒ ๋‚จ์€ ๊ฒƒ์œผ๋กœ ์ถœ๋ ฅ๋ฉ๋‹ˆ๋‹ค.

 

8. ๋‘ ๋‚ ์งœ ์‚ฌ์ด์˜ ๋…„ ์ฐจ์ด ๊ตฌํ•˜๊ธฐ

์—ฐ์ฐจ ๊ตฌํ•˜๋Š” ์ฟผ๋ฆฌ

SELECT TIMESTAMPDIFF(YEAR, '20220718', '20230101') as zero,
TIMESTAMPDIFF(YEAR, '20220718', '20230718') as one;

22๋…„ 7์›” 18์ผ๋ถ€ํ„ฐ 23๋…„ 1์›” 1์ผ๊นŒ์ง€๋Š” 1๋…„์ด ๋˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— 0์œผ๋กœ ์ถœ๋ ฅ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๊ทธ๋Ÿฌ๋‚˜ 23๋…„ 7์›” 18์ผ์ด ๋˜๋Š” ์ˆœ๊ฐ„ ๋”ฑ 1๋…„์ฐจ๊ฐ€ ์ฑ„์›Œ์ง€๊ฒ ์ฃ ?

 

์‹คํ–‰๊ฒฐ๊ณผ

๋‚ ์งœ ์ฐจ์ด, ๋…„์ฐจ ์—ฐ๋„ ๋ถ„๊ธฐ ์ฐจ์ด ๊ตฌํ•˜๊ธฐ ์ฟผ๋ฆฌ
๋‚ ์งœ ์ฐจ์ด, ๋…„์ฐจ ์—ฐ๋„ ๋ถ„๊ธฐ ์ฐจ์ด ๊ตฌํ•˜๊ธฐ ์ฟผ๋ฆฌ

๊น”๋”ํ•˜๊ฒŒ ์ถœ๋ ฅ๋˜๋Š” ๋ชจ์Šต์ž…๋‹ˆ๋‹ค.

 

์ด๋ฅผ ์ž˜ ํ™œ์šฉํ•˜์…”์„œ ํšจ์œจ์ ์ธ ์ฟผ๋ฆฌ๋ฅผ ์ž‘์„ฑํ•ด๋ณด์‹œ๊ธฐ ๋ฐ”๋ž๋‹ˆ๋‹ค :)

 

 

 

 

728x90
๋ฐ˜์‘ํ˜•

๋Œ“๊ธ€