๋ฐ์ดํฐ ์ ๋ ฅํ๊ธฐ
CREATE TABLE people (name VARCHAR(100), birthdate DATE, birthtime TIME, birthdt DATETIME);
insert into people
(name, birthdate, birthtime, birthdt)
values
( 'Mike', '1990-11-11', '10:07:35', '1990-11-11 10:07:35'),
( 'Larry', '1980-12-25', '04:10:42', '1980-12-25 04:10:42');
-- ๋
์ ์ผ์์ ๋ ์ง๋ง ๊ฐ์ ธ์ฌ ๋
select name, day(birthdate)
from people;
-- ๋
์ ์ผ์์ ์๋ง ๊ฐ์ ธ์ฌ ๋
select name, month(birthdate)
from people;
-- ๋
์ ์ผ์์ ๋
๋๋ง ๊ฐ์ ธ์ฌ ๋
select name, year(birthdate)
from people;
-- ์์ผ์ ๋ฌธ์์ด๋ก ๊ฐ์ ธ์ฌ ๋
select name, dayname(birthdate)
from people;
-- ์์ผ์ ์ซ์๋ก ๊ฐ์ ธ์ฌ ๋
select name, dayofweek(birthdate)
from people;
-- ์๊ฐ๋ ๊ฐ๊ฐ ์ฒ๋ฆฌํ๋ ํจ์๊ฐ ์๋ค
select name, hour(birthtime), minute(birthtime), second(birthtime)
from people;
-- DATETIME์ ๋
์ ์ผ ์ ๋ถ ์ด ๋ค ๋๋ค
select name, year(birthdt), hour(birthdt)
from people;
date_format
# ๋ง์ด ์ฌ์ฉํ์ง๋ ์๋๋ค ๊ธ๋ก๋ฒ ํ์ฌ์์๋ ํจ์จ์ ์ผ๋ก ์ฌ์ฉํ ์ ์๊ธฐ ๋๋ฌธ์ด๋ค.
-- db์ ์ ์ฅ๋ ์๊ฐํ์์ ๋ฐ์ดํฐ๋ฅผ, ์ฌ๋์ด ๋ณด๊ธฐ ํธํ ๋ฌธ์์ด๋ก ๋ฐ๊พธ๋ ๋ฐฉ๋ฒ
-- 1990-11-11 10:07:35 => 1990๋
11์ 11์ผ, 10์ 7๋ถ ์
๋๋ค
select name, date_format(birthdt, '%Y๋
%m์ %d์ผ, %H์ %i๋ถ ์
๋๋ค') as datedt
from people;
#๊ธ๋ก๋ฒํ์ฌ?
UTC(๊ธ๋ก๋ฒ ํ์ค์๊ฐ)์ ์ฌ์ฉํ๋ค.
๋ฐ์ดํฐ๋ฒ ์ด์ค ๊ธ๋ก๋ฒ ํ์ค์๊ฐ( UTC )
-- ํ์ฌ์๊ฐ์ ๊ตฌํ๋ ๋ฐฉ๋ฒ now() ํจ์
select now();
-- ํ์ฌ์ ๋
์์ผ๋ง ๊ฐ์ ธ์ค๊ณ ์ถ์๋ curdate() ํจ์
select curdate();
-- ํ์ฌ์ ์๋ถ์ด๋ง ๊ฐ์ ธ์ค๊ณ ์ถ์๋ curtime() ํจ์
select curtime();
**********
์ค๋ฌด์์์ ๋ฐฉ๋ฒ
ํ ์ด๋ธ์ ๋ง๋ค ๋ ๋ง๋ ์ด์ datatype์ timestamp๋ก ํ๊ณ (๊ดํธ๋ ์ง์ด๋ค)
default(๋ํดํธ)์ now() ๋๋ CURRENT_TIMESTAMP๋ฅผ ์ ๋๋ค.
update๋ฌธ์ ์ธ ๋ ์ ๋ฐ์ดํธ ๋ ์๊ฐ๋ ์๊ณ ์ถ์ด์ updated ์ด์ ๋ฐ๋ก ๋ง๋ค ๋์๋
ํ ์ด๋ธ์ ๋ง๋ค ๋ ๋ง๋ ์ด์ datatype์ timestamp๋ก ํ๊ณ (๊ดํธ๋ ์ง์ด๋ค)
default(๋ํดํธ)์ now() on update now() ๋๋ CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP๋ฅผ ์ ๋๋ค.
**********
datediff() ํจ์
-- ์๊ฐ์ ์ฐจ์ด๋ฅผ ๊ตฌํ๋ ๋ฐฉ๋ฒ
-- ํ์ฌ ์๊ฐ๊ณผ birthdt ์๊ฐ์ ์ฐจ์ด๋ฅผ ๊ตฌํด๋ณด์
select datediff(now() , birthdt)
date_add() ํจ์
-- ํ์ด๋ ์๊ฐ์ผ๋ก๋ถํฐ 100์ผ ํ์ ๋ ์ง๋?
select birthdt, date_add( birthdt, interval 100 day )
from people;
-- ํ์ด๋ ์๊ฐ์ผ๋ก๋ถํฐ 5์ฃผ ํ์ ๋ ์ง๋?
select birthdt, date_add( birthdt, interval 5 week )
from people;
-- ํ์ด๋ ์๊ฐ์ผ๋ก๋ถํฐ 72์๊ฐ ํ์ ๋ ์ง๋?
select birthdt, date_add( birthdt, interval 72 hour )
from people;
date_sub() ํจ์
-- ํ์ด๋ ์๊ฐ์ผ๋ก๋ถํฐ 100์ผ ์ ์ ๋ ์ง๋?
select birthdt, date_sub( birthdt, interval 100 day )
from people;
์ค๋ฌด์์ ๋ง์ด ์ฐ๋ ๋ฐฉ๋ฒ
-- ํ์ด๋ ์๊ฐ์ผ๋ก๋ถํฐ 72์๊ฐ ํ์ ๋ ์ง๋?
select birthdt, birthdt + interval 72 hour
from people;
-- ํ์ด๋ ์๊ฐ์ผ๋ก๋ถํฐ 72์๊ฐ ์ ์ ๋ ์ง๋?
select birthdt, birthdt - interval 72 hour
from people;
-- ์ฌ๋ฌ ์ค๋ ๊ฐ๋ฅํ๋ค
select birthdt, birthdt + interval 2 year + interval 27 hour - interval 29 minute
from people;