MySQL에서 INT를 DATETIME으로 변환하는 방법
MySQL에서는 내장 함수인 FROM_UNIXTIME()을 사용하여 INT 타입의 유닉스 타임스탬프 값을 DATETIME 형식으로 간편하게 변환할 수 있습니다. 유닉스 타임스탬프란 1970년 1월 1일 00:00:00 UTC부터 경과한 초(second)를 나타내는 정수 값입니다.
기본 문법은 다음과 같습니다.
SELECT FROM_UNIXTIME(yourColumnName,'%Y-%m-%d') as AnyVariableName from yourTableName;
1. 예제 테이블 생성
먼저 위 문법을 실습하기 위해 테이블을 생성하겠습니다. 테이블 생성 쿼리는 다음과 같습니다.
mysql> create table IntToDateDemo -> ( -> Number int -> ); Query OK, 0 rows affected (0.59 sec)
2. 데이터 삽입
INSERT 명령어를 사용하여 테이블에 유닉스 타임스탬프 형태의 샘플 데이터를 삽입합니다.
mysql> truncate table IntToDateDemo; Query OK, 0 rows affected (4.11 sec) mysql> insert into IntToDateDemo values(1545284721); Query OK, 1 row affected (0.19 sec) mysql> insert into IntToDateDemo values(1576820738); Query OK, 1 row affected (0.19 sec) mysql> insert into IntToDateDemo values(1513748752); Query OK, 1 row affected (0.24 sec) mysql> insert into IntToDateDemo values(1671515204); Query OK, 1 row affected (0.18 sec)
3. 저장된 데이터 확인
SELECT 문을 사용하여 테이블에 저장된 모든 레코드를 조회합니다.
mysql> select *from IntToDateDemo;
출력 결과:
+------------+ | Number | +------------+ | 1545284721 | | 1576820738 | | 1513748752 | | 1671515204 | +------------+ 4 rows in set (0.00 sec)
4. FROM_UNIXTIME()으로 날짜 변환하기
이제 FROM_UNIXTIME() 함수를 사용하여 INT 값을 'YYYY-MM-DD' 형식의 날짜로 변환해 보겠습니다.
mysql> select from_unixtime(Number,'%Y-%m-%d') as DateDemo from IntToDateDemo;
출력 결과:
+------------+ | DateDemo | +------------+ | 2018-12-20 | | 2019-12-20 | | 2017-12-20 | | 2022-12-20 | +------------+ 4 rows in set (0.00 sec)
위 출력 결과에서 확인할 수 있듯이, 숫자로 저장된 유닉스 타임스탬프가 읽기 쉬운 날짜 형식으로 성공적으로 변환되었습니다.
참고: 시간 정보까지 함께 변환하기
날짜뿐만 아니라 시간 정보까지 함께 표시하고 싶다면 포맷 문자열을 '%Y-%m-%d %H:%i:%s'로 지정하면 됩니다.
mysql> select from_unixtime(Number,'%Y-%m-%d %H:%i:%s') as DateTimeDemo from IntToDateDemo;
또한 포맷 문자열을 생략하면 기본적으로 'YYYY-MM-DD HH:MM:SS' 형식의 전체 DATETIME 값이 반환됩니다.