DB/MySQL

[MySQL] 날짜정보 자료형 + 다양한 날짜형식 가져오기

pogles 2023. 1. 2. 17:41

DATE

DATE 자료형은 오직 날짜정보만 담을 수 있으며, 시간정보는 담을 수가 없다. 

날짜형식은 yyyy-dd-mm 을 갖고 있으며, 입력은 1000-01-01 부터  9999-12-31 까지의 날짜를 넣을 수 있다

 

 

 

DATETIME

DATETIME 자료형은 날짜 + 시간정보를 담을 수 있으며

형식은 yyyy-dd-mm hh:mm:ss 이며, 입력은 1000-01-01 00:00:00부터  9999-12-31 23:59:59 까지의 날짜를 넣을 수 있다

문자형 데이터 타입이며, 4byte 의 메모리를 차지한다,

무조건 사용자가 값을 입력해주어야 한다는 특징이있다.

 

 

TIMESTAMP

TIMESTAMP 자료형은 날짜 + 시간정보를 담을 수 있으며

형식은 yyyy-dd-mm hh:mm:ss 이며, 입력은 1970-01-01 00:00:00부터  2038-01-19 03:14:97 까지의 날짜를 넣을 수 있다.

이는 UTC(국제표준시) 를 기준으로 나온 자료형이기 때문에 입력범위가 위 같이 정해져있다.

숫자형 데이터 타입이며, 8byte 의 메모리를 차지한다,

DATETIME 과 다르게 사용자가 값을 주지 않아도, 자동으로 실행시간을 저장해준다는 특징 이있다.

 

 

 

 

 

DATE_FORMAT(now(), '형식')

 

 

 

MySQL 은 현재 날짜 정보를 담고있는 now() 함수를 제공한다. now() 는 기본적으로 [yyyy-dd-mm hh:mm:ss] 형식을 가지고 있다. 이러한 기본 날짜 형식말고 다른 형식을 사용하기 위해서는 DATE_FORMAT() 함수를 활용하면 된다.

 

 

 

현재날짜정보를 [ yyyy년 mm월 dd일 hh시 mm분 ss초] 형식으로 바꾸기 위해선 다음과 같이 사용한다.

CREATE TABLE tb_time(
	currentTime timestamp
);

INSERT INTO tb_time(currentTime)
VALUES(now());

SELECT DATE_FORMAT(currentTime, %Y년 %m월 %d일 %H시 %i분 %s초) AS 기록시간
FROM tb_time;

 

 
format 표시형식 format 표시형식
%Y 연도(4자리 표시) %H 시간(00-23)
%y 연도(2자리 표시) %h 시간(00-12)
%M 월이름(영문) %k 시간(0-23)
%m (01-12) %i (00-59)
%e (1-12) %s (00-59)
%d (00-31)    
%e (1-31)