DATE 타입
날짜는 포함하지만 시간은 포함하지 않을 때 사용하는 타입.
YYYY-MM-DD 형식으로 입력한다. 1000-01-01 부터 9999-12-31 까지만 입력 가능하다.
TIME 타입
시간에 대한 정보를 담는 타입.
HH:MM:SS 형식으로 -838:59:59 ~ 838:59:59 까지 입력 가능하다.
DATETIME 타입
날짜와 시간을 모두 포함할 때 사용하는 타입.
YYYY-MM-DD HH:MM:SS 형식으로 1000-01-01 00:00:00 부터 9999-12-31 23:59:59 까지 가능하다.
TIMESTAMP 타입
날짜와 시간을 모두 포함한 타입.
TIMESTAMP는 시간을 1970년 1월 1일 0시부터 몇초가 지났는지 숫자로 표현한 것이다.
숫자이기 때문에 시간계산에 용이하다.
insert into people2 (name, birthdate, birthtime, birthdt)
values ('Mike', '1990-11-11', '10:07:35', '1990-11-11 10:07:35'),
('Larry', '1972-12-25', '04:10:42', '1972-12-25 04:10:42');
select * from people2;
날짜, 시간에 관한 여러 함수들을 알아보자.
-- 날짜 정보만 가져오기
select day(birthdate)
from people2;
-- 요일 정보 가져오기(Sunday, Monday, ...)
select dayname(birthdate)
from people2;
-- 요일 정보 숫자로 가져오기(1, 2, ...) 1은 Sunday, 2는 Monday, ...
select dayofweek(birthdate)
from people2;
-- 몇 일인지 가져오기
select dayofmonth(birthdate)
from people2;
-- 몇 월인지 가져오기
select month(birthdate)
from people2;
-- 시, 분, 초 가져오기
select hour(birthtime), minute(birthtime), second(birthtime)
from people2;
-- DB에 저장된 시간형식의 데이터를 사람이 보기 편한 데이터로 바꾸는 방법
select date_format(birthdt, '%Y년 %m월 %d일, %h시')
from people2;
-- 현재 시간을 가져오고 싶을 때, now() 함수를 사용
select now();
-- 현재 년월일 만 가져오고 싶을 때, curdate()
select curdate();
-- 현재 시분초만 가져오고 싶을 때, curtime()
select curtime();
위 함수들은 UTC(협정세계시)로 출력된다.
시간의 차이를 구하는 방법
1. datediff() : 날짜간 차이를 계산
select datediff(now(), birthdt)
from people2;
2. interval : 시간의 간격을 계산
-- date_add : + , date_sub : -
select birthdt, date_add(birthdt, interval 1 day)
from people2;
select birthdt, date_add(birthdt, interval 3 month)
from people2;
select birthdt, date_add(birthdt, interval 5 week)
from people2;
select birthdt, date_add(birthdt, interval 7 hour)
from people2;
select birthdt, date_sub(birthdt, interval 7 hour)
from people2;
-- 함수 대신 +, - 기호를 써도 된다.
select birthdt, birthdt + interval 7 hour
from people2;
select birthdt, birthdt - interval 7 hour
from people2;
select birthdt, birthdt - interval 8 hour + interval 3 hour
from people2;
'MySQL' 카테고리의 다른 글
MySQL 조건문 사용하기 case, if (0) | 2022.12.09 |
---|---|
MySQL Workbench에서 insert, update 할 때마다 시간 저장하기 (0) | 2022.12.08 |
MySQL - select 문의 여러 문법들 (0) | 2022.12.07 |
MySQL - group by 와 having (0) | 2022.12.07 |
MySQL - 서브쿼리(SubQuery) (0) | 2022.12.07 |