Database

[MySQL] NOW, DATE_FORMAT

비번변경 2022. 6. 15. 19:40

날짜 / 시간 데이터 타입

MySQL은 다섯 가지 종류의 날짜 / 시간 데이터 타입을 사용한다.

타입 정보 범위 형식 바이트수
DATE 날짜 정보 1000-01-01
  ~ 9999-12-31
YYYY-MM-DD 3 Byte
DATETIME 날짜와 시간 정보 1000-01-01 00:00:00
  ~ 9999-12-31 23:59:59
YYYY-MM-DD HH:MM:SS 8 Byte
TIMESTAMP 1970-01-01 00:00:00 UTC을 기준으로 한 초수

* MySQL 버전과 서버의 SQL 실행모드에 따라 동작이 다르다.
    4 Byte
TIME 시각 정보 -838:59:59 
  ~ 838:59:59
HH:MM:SS 3 Byte
YEAR 2자리수 또는 4자리수의 년도 정보.
기본적으로 4자리수를 사용한다.
2자리수 : 70 ~ 69
4자리수 : 1901 ~ 2155, 0000
  1 Byte

이 글에서는 날짜 / 시간 데이터를 다룰 때 사용하는 NOW, DATE_FORMAT 함수를 간단히 정리한다.

 

NOW

현재 시간을 DATETIME 형의 데이터로 반환한다.

SELECT NOW();

SELECT NOW();

 

DATE_FORMAT

매개변수로 전달한 날짜, 시간 데이터를 지정한 포맷으로 변환한다.

DATE_FORMAT(date, format)
# date : 포매팅할 날짜, 시간
# formate : 사용할 형식

 

format

형식 설명
%a 요일 (Sun ~ Sat)
%b 월 (Jan ~ Dec)
%c 월 (0 ~ 12)
%D 그 달의 날짜와 접미사가 붙은 값.
%D
%d 날짜 (01 ~ 31)
%e 날짜 (0 ~ 31)
%f 마이크로초 (000000 ~ 999999)
%H 시 (00 ~ 23)
%h 시 (00 ~ 12)
%I 시 (00 ~ 12)
%i 분 (00 ~ 59)
%j 일 (001 ~ 366)
%j
%k 시 (0 ~ 23)
%l 시 (1 ~ 12)
%M 월 (January ~ Decemnber)
%m 월 (00 ~ 12)
%p AM 또는 PM
%r AM 또는 PM이 표함된 시각 (hh:mm:ss AM/PM)
%S 초 (00 ~ 59)
%s 초 (00 ~ 59)
%T 시각 (hh:mm:ss)
%U 주 (시작일 : 일요일)
%u 주 (시작일 : 월요일)
%V 주 (시작일 : 일요일). %X와 함께 사용
%v 주 (시작일 : 월요일). %x와 함께 사용
%W 요일 (Sunday ~ Saturday)
%w 요일 (0 ~ 6)
%X 연도 (주의 시작일 : 일요일) %V와 함께 사용
%x 연도 (주의 시작일 : 월요일) %v와 함께 사용
%Y 연도 (4자리수)
%y 연도 (2자리수)

 

DATE_FORMAT 예시

자주 사용하는 형태를 몇 가지 정리한다.

 

YYYY-MM-DD 

SELECT DATE_FORMAT(NOW(), '%Y-%m-%d');

YYYY-MM-DD

 

YY-MM-DD

SELECT DATE_FORMAT(NOW(), '%y-%m-%d');

YY-MM-DD

24시간제

SELECT DATE_FORMAT(NOW(), '%H-%i-%s');
SELECT DATE_FORMAT(NOW(), '%T');

24시간제

 

12시간제

SELECT DATE_FORMAT(NOW(), '%h-%i-%s');

 

 

참고 문서

MySQL 날짜 / 시간 데이터 타입

https://www.w3schools.com/mysql/func_mysql_date_format.asp