기억의 기록

Mysql - DATE_FORMAT(date,format) 본문

개발/Mysql

Mysql - DATE_FORMAT(date,format)

nethunter 2023. 9. 7. 11:01
반응형

 

Mysql Version : 8.0.32 (SELECT VERSION();)

Tool : dbForge Studio

 

자주 쓰이는 함수로 날자 형식을 변경하는 함수 입니다.

 

툴에 따라 다르지만 날자, 변경할 형식으로 입력하라고 도움말이 나옵니다.

 

한국에서 사용하는 월일시로 변경을 해보겠습니다.

SELECT NOW() AS datetime_now;

 

현재 시각을 조회하면 오전이라고 표시가 됩니다.

SELECT DATE_FORMAT(NOW(), '%Y-%m-%d %H:%i:%s') AS datetime_now;

 

응용

일련번호 생성시 날자를 포함하여 만드는 경우가 있는데 date_foremat 을 사용하면 일자별로 일련번호를 추출할 수 있습니다.

SELECT DATE_FORMAT(NOW(), '%Y%m%d') * 10000000 + 1 AS date_seq_no;

이런식으로 일자 데이터가 포함된 일련번호가 생성되며,

+1 은 AUTO_INCREMENT 로 따로 받아와서 사용하면 유니크한 일련번호가 생성됩니다.

 

날자 데이터가 많이 길다고 하면 %Y를  %y 소문자로 변경하여 뒤에 두자리만 사용해도 됩니다.

SELECT DATE_FORMAT(NOW(), '%y%m%d') * 1000000000 + 1 AS date_seq_no;

편하게 만들 수 있습니다.

 

시분초는 24시간제로 한번에 변경하는 방법도 있습니다.

SELECT DATE_FORMAT('2023-01-01 13:23:01', '%T') AS datetime_now;

%H:%i:%s 하지 않아도  %T 면 한번에 변경 가능합니다.

 

자주 쓰이는 날자 변환  지정자 (년월일시분초)

지정자
%Y (대문자) 년도 4자리 숫자 (...2022,2023,2024...)
%y 년도 2자리 숫자 (...22, 23, 24...)
%m 월, 두자리 고정 숫자(00, 01, 02...12)
%c 월, 숫자 (0, 1, 2, 3...12)
%d 일, 두자리 고정 숫자 (00, 01, 02...31)
%e 일, 숫자 (0,1,2...31)
%j 일, 일년중 오늘이 몇일인지 (001, 002 ... 366)
%H (대문자) 시, 24시간 (00, 01, 02 ... 23)
%k 시, 24시간 (0, 1, ... , 23)
%h 시, 12시간 (01 ... 12)
%I (대문자) 시, 12시간 (01 ... 12)
%l (소문자 L) 시, 12시간 (1 ... 12)
%i 분, 숫자 (00, 01,  ... ,59)
%S (대문자) 초, 숫자 (00, 01,  ... ,59)
%s 초, 숫자 (00, 01,  ... ,59)
%T (대문자) 24시간제 시:분:초 리턴

 

더 많은 변환자는 아래를 참고해 주세요 

 

 

https://dev.mysql.com/doc/refman/8.0/en/date-and-time-functions.html#function_date-format

 

MySQL :: MySQL 8.0 Reference Manual :: 12.7 Date and Time Functions

12.7 Date and Time Functions This section describes the functions that can be used to manipulate temporal values. See Section 11.2, “Date and Time Data Types”, for a description of the range of values each date and time type has and the valid formats

dev.mysql.com

 

 

 

반응형