날짜&시간 데이터타입
DATE |
YYYY-MM-DD |
9999년까지 저장가능 |
DATETIME |
YYYY-MM-DD hh:mm:ss |
9999년까지 저장가능 |
TIMESTAMP |
YYYY-MM-DD hh:mm:ss |
2038년까지 저장가능 |
- TIMESTAMP는 현재 DB시간 기록용으로 사용하는 것 이외에는 잘 사용하지 않음
- DATETIME(6) → 초단위 소수점 6자리까지 기록
테이블 생성 및 데이터 저장
- YYYY-MM-DD hh:mm:ss 는 문자열 타입으로 입력하면 된다.
CREATE TABLE blog.exercise(
날짜 datetime
);
INSERT INTO blog.exercise (날짜) VALUES ("2023-03-21 12:00:00");
데이터 필터링
- 입력할 때와 마찬가지로 YYYY-MM-DD hh:mm:ss 는 문자열 타입으로 사용하면 된다.
2022년 2월 16일 00:00:00 이후에 쓴 블로그 글을 필터링 하고 싶다.
SELECT * from blog WHERE 발행일 > "2022-02-16 00:00:00";
2021년 10월 24일에 작성된 글을 필터링 하고 싶다.
SELECT * FROM blog.blog WHERE 발행일 >= "2021-10-24 00:00:00"
AND 발행일 < "2021-10-25 00:00:00";
2022년 2월 16일부터 현재날짜까지 발행된 모든 글을 필터링하고 싶다.
SELECT * from blog WHERE 발행일 >= "2022-02-16"
AND 발행일 < now();
날짜 형식 변경 : date_format("날짜/시간", "바꿀 형식")
SELECT date_format(now(), '%Y-%m-%d');
날짜 데이터 수정 : DATE_ADD / DATE_SUB
-- 시간 더하기
DATE_ADD(기준날짜, INTERVAL)
-- 시간 빼기
DATE_SUB(기준 날짜, INTERVAL)
현재 값에 1년을 모두 더해주고 싶다.
SELECT DATE_ADD(last_login, INTERVAL 1 year) from login_record;
DATETIME에서 "월"이나 "일" 등 특정 값만 가져오기
MONTH(컬럼명)
DAY(컬럼명)
2월이면서 짝수 일자의 로그인 기록만 가져오고 싶다.
SELECT * FROM login_record
WHERE MONTH(last_login) = 2 AND DAY(last_login) % 2 = 0;