MySQL

MySQL) ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค DATE(๋‚ ์งœ) ๊ฐ€๊ณตํ•˜๋Š” ํ•จ์ˆ˜

567Rabbit 2024. 5. 16. 10:13

๋ฐ์ดํ„ฐ ์ž…๋ ฅํ•˜๊ธฐ

 

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;