์ž‘์„ฑ์ผ ๋Œ“๊ธ€ ๋‚จ๊ธฐ๊ธฐ

๐Ÿ“… SQL์—์„œ ๋‚ ์งœ ๊ณ„์‚ฐ๊ณผ ์œค๋…„ ํŒ๋‹จ ๋ฐฉ๋ฒ• ๋ฐ ์ฃผ์˜ํ•  ์ 

โœ… SQL์—์„œ ๋‚ ์งœ ๊ตฌํ•˜๊ธฐ
SQL์˜ ๋‚ ์งœ ํ•จ์ˆ˜๋Š” ์‚ฌ์šฉํ•˜๋Š” ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์‹œ์Šคํ…œ์— ๋”ฐ๋ผ ๋‹ค๋ฅผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์—์„œ๋Š” ๋Œ€ํ‘œ์ ์œผ๋กœ MySQL๊ณผ Oracle, SQL Server ๊ธฐ์ค€์œผ๋กœ ์†Œ๊ฐœํ•ฉ๋‹ˆ๋‹ค.

 

๐Ÿ“Œ ํ˜„์žฌ ๋‚ ์งœ ๊ตฌํ•˜๊ธฐ
DBMS
ํ˜„์žฌ ๋‚ ์งœ ํ•จ์ˆ˜
MySQL
CURRENT_DATE, CURDATE()
Oracle
SYSDATE
SQL Server
GETDATE()
— MySQL
SELECT CURDATE();
— Oracle
SELECT SYSDATE FROM DUAL;
— SQL Server
SELECT GETDATE();
๐Ÿ“Œ ๋‚ ์งœ ๋”ํ•˜๊ณ  ๋นผ๊ธฐ
DBMS
์‚ฌ์šฉ๋ฒ• ์˜ˆ์‹œ
MySQL
DATE_ADD('2025-04-23', INTERVAL 7 DAY)
Oracle
SYSDATE + 7
SQL Server
DATEADD(DAY, 7, GETDATE())
๐Ÿ”„ ์œค๋…„(leap year) ํŒ๋‹จ ๋ฐฉ๋ฒ•
์œค๋…„์€ **”4๋กœ ๋‚˜๋ˆ„์–ด ๋–จ์–ด์ง€๋ฉด์„œ 100์œผ๋กœ๋Š” ๋‚˜๋ˆ„์–ด๋–จ์–ด์ง€์ง€ ์•Š๊ฑฐ๋‚˜, 400์œผ๋กœ ๋‚˜๋ˆ„์–ด๋–จ์–ด์ง€๋Š” ํ•ด”**์ž…๋‹ˆ๋‹ค.
๐Ÿ“Œ SQL๋กœ ์œค๋…„ ๊ตฌํ•˜๊ธฐ (MySQL ์˜ˆ์‹œ)
SELECT
YEAR,
CASE
WHEN (YEAR % 4 = 0 AND YEAR % 100 != 0) OR (YEAR % 400 = 0)
THEN ‘์œค๋…„’
ELSE ‘ํ‰๋…„’
END AS ์œค๋…„์—ฌ๋ถ€
FROM (
SELECT 2024 AS YEAR UNION ALL
SELECT 2025 UNION ALL
SELECT 1900 UNION ALL
SELECT 2000
) AS YEARS;
๐Ÿ“Œ Oracle ์˜ˆ์‹œ
SELECT year,
CASE
WHEN MOD(year, 4) = 0 AND MOD(year, 100) != 0 OR MOD(year, 400) = 0
THEN ‘์œค๋…„’
ELSE ‘ํ‰๋…„’
END AS ์œค๋…„์—ฌ๋ถ€
FROM (SELECT 2024 AS year FROM dual
UNION ALL SELECT 2025 FROM dual
UNION ALL SELECT 1900 FROM dual
UNION ALL SELECT 2000 FROM dual);
โš ๏ธ ์ฃผ์˜ํ•  ์ 
  1. DBMS๋ณ„ ํ•จ์ˆ˜ ์ฐจ์ด
    ๋‚ ์งœ ๊ณ„์‚ฐ ํ•จ์ˆ˜๋‚˜ ํ˜•์‹์€ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋งˆ๋‹ค ๋‹ค๋ฅด๋ฏ€๋กœ, ์‚ฌ์šฉ ์ค‘์ธ ์‹œ์Šคํ…œ์˜ ๊ณต์‹ ๋ฌธ์„œ๋ฅผ ์ฐธ๊ณ ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
  2. ์œค๋…„ ํŒ๋‹จ์€ ์ง์ ‘ ์—ฐ์‚ฐ์œผ๋กœ ๊ตฌํ˜„ํ•ด์•ผ ํ•จ
    ๋Œ€๋ถ€๋ถ„์˜ DB๋Š” IS_LEAP_YEAR() ๊ฐ™์€ ๋‚ด์žฅ ํ•จ์ˆ˜๊ฐ€ ์—†๊ธฐ ๋•Œ๋ฌธ์— ์ˆ˜์‹์„ ์ง์ ‘ ์ž‘์„ฑํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
  3. ๋‚ ์งœ ํฌ๋งท ํ†ต์ผ
    YYYY-MM-DD ๋˜๋Š” YYYY/MM/DD ๋“ฑ ๋‚ ์งœ ํ˜•์‹์ด ์ผ๊ด€๋˜์ง€ ์•Š์œผ๋ฉด ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ, ํฌ๋งท์„ ํ•ญ์ƒ ๋ช…์‹œํ•˜๊ฑฐ๋‚˜ ๋ณ€ํ™˜ํ•ด ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค.
  4. ํƒ€์ž„์กด ๊ณ ๋ ค
    ํŠนํžˆ GETDATE(), SYSDATE ๋“ฑ์€ ์„œ๋ฒ„์˜ ์‹œ๊ฐ„๋Œ€๋ฅผ ๊ธฐ์ค€์œผ๋กœ ํ•˜๋ฏ€๋กœ, ํƒ€์ž„์กด์ด ์ค‘์š”ํ•œ ์‹œ์Šคํ…œ์—์„œ๋Š” CURRENT_TIMESTAMP AT TIME ZONE ๋“ฑ์„ ํ™œ์šฉํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
๐ŸŽฏ ๊ฒฐ๋ก 
SQL์—์„œ ๋‚ ์งœ ์ฒ˜๋ฆฌ์™€ ์œค๋…„ ๊ณ„์‚ฐ์€ ๊ฐ„๋‹จํ•œ ํ•จ์ˆ˜์™€ ์ˆ˜์‹์œผ๋กœ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ DBMS๋ณ„ ๋ฌธ๋ฒ• ์ฐจ์ด, ํฌ๋งท ๊ด€๋ฆฌ, ํƒ€์ž„์กด ๋ฌธ์ œ ๋“ฑ์„ ์—ผ๋‘์— ๋‘๊ณ  ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค.
๋‹ต๊ธ€ ๋‚จ๊ธฐ๊ธฐ