MySQL에서 테이블의 타입을 date, time, datetime으로 설정하고
ISO 포맷으로 된 데이터를 입력하면 시간데이터로 인식한다.
date, time, datetime
- date: YYYY-MM-DD
- time: HH:MM:SS
- datetime: YYYY-MM-DD HH:MM:SS
in:
desc people2;
out:

시간 데이터를 테이블에 넣어보자
in:
insert into people2
(name,birthdate,birthtime,birthdt)
values
('Padma','1988-11-11' , '10:07:35' , '1988-11-11 10:07:35'),
('Larry','1994-04-22' , '04:10:42' , '1994-04-22 04:10:42');
select * from people2;
out:

현재 시간과 관련된 함수 curdate(), curtime(), now() 를 사용해서 인서트 해보자
in:
insert into people2
(name,birthdate,birthtime,birthdt)
values
('Harry' , curdate() , curtime() , now());
select * from people2;
out:

year 함수로 이름과 생년월일 중 연도만 보여줄수있다.
in:
select name, year(birthdate)
from people2;
out:

# 월 정보만 보여주고 싶다면 month() 함수를, 일 정보는 day() 함수를 사용하면 된다.
dayofweek함수를 사용하여 요일을 숫자로 나타낼수 있다.
in:
select name, year(birthdate)
from people2;
out:

# 1부터 7까지 (sunday ~ friday) 나타낸다.
# dayname함수를 사용하면 요알명으로 나타낼수있다.
hour함수를 사용하면 이름과 시간만 보여줄수있다.
in:
select name, hour(birthtime)
from people2;
out:

# 분과 초를 나타내는 minute()과 second() 함수도 제공된다.
date_format 함수를 사용하여 나타내는 형식을 정해줄수 있다.
'2000-11-11 03:05 에 태어났습니다.' 이런 형식으로 나타내자.
in:
select date_format(birthdt, '%Y-%m-%d %H:%i 에 태어났습니다.') as birth_datetime
from people2;
out:

datediff를 사용하여 시간의 차이를 구할수 있다.
birthdate 컬럼과 현재 시간의 차이를 나타내자.
in:
select datediff(now(),birthdate)
from people2;
out:

date_add함수로 birthdate의 36일 후 날짜를 나타내자.
in:
select date_add(birthdate,interval 36 day) from people2
out:

# interval로 week, month, year등의 활용이 가능하다.
시간 데이터에 interval을 이용하여 '+' 연산자로 바로 계산할수있다.
in:
select birthdate + interval 28 week
from people2;
out:

# 28 주 후의 날짜를 나타낸다.
# '-' 연산자를 사용하면 전의 날짜를 나타낼수 있다.
2년 3개월 후의 5시간 전 시간을 나타내자.
in:
select birthdt + interval 2 year + interval 3 month -interval 5 hour
from people2;
out:

테이블을 만들 때 데이터타입을 timestamp로 설정할수있다. 데이터타입
# timestamp는 날짜를 숫자로, 1970년 1월1일 자정을 0으로 시작하여 지금까지를 초단위로 센 수다.
테이블을 만들때 데이터타입이 'timestamp'인 컬럼의 디폴트값을 now()로 설정해주면 현재 시간이 찍히게 된다.

in:
insert into comments
(content)
values
('이 사과 정말 맛있습니다.'),
('진짜?');
select * from comments;
out:

최종 업데이트를 한 날짜 컬럼을 하나 더 만들자
컬럼명은 updated_at 디폴트는 now() on update now()로 설정한다.

in:
insert into comments
(content)
values
('사과 진짜 맛있나요?');
select * from comments;
out:

#아직 업데이트를 하지 않아서 created_at 과 updated_at 의 날짜가 같다
업데이트를 해보자.
in:
update comments
set content = '맛없을거 같은데...'
where id = 3;
select * from comments;
out:

# 업데이트 날짜가 바뀌었다.
댓글