새소식

Database/MySQL

[MySQL] 날짜&시간 데이터

  • -

날짜&시간 데이터타입

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;
  • INTERVAL 1 hour 등...

 

 

DATETIME에서 "월"이나 "일" 등 특정 값만 가져오기

MONTH(컬럼명)
DAY(컬럼명)

 

2월이면서 짝수 일자의 로그인 기록만 가져오고 싶다.

SELECT * FROM login_record
WHERE MONTH(last_login) = 2 AND DAY(last_login) % 2 = 0;

 

 

 

728x90
Contents