โ SQL์์ ๋ ์ง ๊ตฌํ๊ธฐ
SQL์ ๋ ์ง ํจ์๋ ์ฌ์ฉํ๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์์คํ ์ ๋ฐ๋ผ ๋ค๋ฅผ ์ ์์ต๋๋ค. ์ฌ๊ธฐ์์๋ ๋ํ์ ์ผ๋ก MySQL๊ณผ Oracle, SQL Server ๊ธฐ์ค์ผ๋ก ์๊ฐํฉ๋๋ค.
๐ ํ์ฌ ๋ ์ง ๊ตฌํ๊ธฐ
DBMS |
ํ์ฌ ๋ ์ง ํจ์ |
---|---|
MySQL |
|
Oracle |
|
SQL Server |
|
— MySQL
SELECT CURDATE();
— Oracle
SELECT SYSDATE FROM DUAL;
— SQL Server
SELECT GETDATE();
๐ ๋ ์ง ๋ํ๊ณ ๋นผ๊ธฐ
DBMS |
์ฌ์ฉ๋ฒ ์์ |
---|---|
MySQL |
|
Oracle |
|
SQL Server |
|
๐ ์ค๋ (leap year) ํ๋จ ๋ฐฉ๋ฒ
์ค๋ ์ **”4๋ก ๋๋์ด ๋จ์ด์ง๋ฉด์ 100์ผ๋ก๋ ๋๋์ด๋จ์ด์ง์ง ์๊ฑฐ๋, 400์ผ๋ก ๋๋์ด๋จ์ด์ง๋ ํด”**์ ๋๋ค.
๐ SQL๋ก ์ค๋ ๊ตฌํ๊ธฐ (MySQL ์์)
SELECTYEAR,CASEWHEN (YEAR % 4 = 0 AND YEAR % 100 != 0) OR (YEAR % 400 = 0)THEN ‘์ค๋ ’ELSE ‘ํ๋ ’END AS ์ค๋ ์ฌ๋ถFROM (SELECT 2024 AS YEAR UNION ALLSELECT 2025 UNION ALLSELECT 1900 UNION ALLSELECT 2000) AS YEARS; |
๐ Oracle ์์
โ ๏ธ ์ฃผ์ํ ์
-
DBMS๋ณ ํจ์ ์ฐจ์ด
๋ ์ง ๊ณ์ฐ ํจ์๋ ํ์์ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ง๋ค ๋ค๋ฅด๋ฏ๋ก, ์ฌ์ฉ ์ค์ธ ์์คํ ์ ๊ณต์ ๋ฌธ์๋ฅผ ์ฐธ๊ณ ํด์ผ ํฉ๋๋ค. -
์ค๋ ํ๋จ์ ์ง์ ์ฐ์ฐ์ผ๋ก ๊ตฌํํด์ผ ํจ
๋๋ถ๋ถ์ DB๋IS_LEAP_YEAR()
๊ฐ์ ๋ด์ฅ ํจ์๊ฐ ์๊ธฐ ๋๋ฌธ์ ์์์ ์ง์ ์์ฑํด์ผ ํฉ๋๋ค. -
๋ ์ง ํฌ๋งท ํต์ผ
YYYY-MM-DD
๋๋YYYY/MM/DD
๋ฑ ๋ ์ง ํ์์ด ์ผ๊ด๋์ง ์์ผ๋ฉด ์ค๋ฅ๊ฐ ๋ฐ์ํ ์ ์์ผ๋ฏ๋ก, ํฌ๋งท์ ํญ์ ๋ช ์ํ๊ฑฐ๋ ๋ณํํด ์ฌ์ฉํ๋ ๊ฒ์ด ์ข์ต๋๋ค. -
ํ์์กด ๊ณ ๋ ค
ํนํGETDATE()
,SYSDATE
๋ฑ์ ์๋ฒ์ ์๊ฐ๋๋ฅผ ๊ธฐ์ค์ผ๋ก ํ๋ฏ๋ก, ํ์์กด์ด ์ค์ํ ์์คํ ์์๋CURRENT_TIMESTAMP AT TIME ZONE
๋ฑ์ ํ์ฉํด์ผ ํฉ๋๋ค.