Computer >> 컴퓨터 >  >> 프로그래밍 >> MySQL

MySQL에서 Unix 타임스탬프를 날짜 형식으로 변환하는 방법

MySQL에서 Unix 타임스탬프를 날짜 형식으로 변환하는 방법

MySQL에 저장된 Unix 타임스탬프(bigint) 값을 사람이 읽기 쉬운 날짜·시간 형식으로 바꾸려면 from_unixtime() 함수와 date_format() 함수를 조합하면 됩니다. 기본 구문은 다음과 같습니다.

select date_format(from_unixtime(yourColumnName), '%b %d, %Y %l:%i %p PDT') from yourTableName;

주요 함수 및 형식 지정자

  • from_unixtime() — 초 단위 Unix 타임스탬프를 DATETIME 값으로 변환합니다.
  • date_format() — 날짜 값을 지정한 패턴에 맞춰 문자열로 포맷합니다.
  • %b — 축약된 월 이름(Jan ~ Dec)
  • %d — 두 자리 일(01 ~ 31)
  • %Y — 네 자리 연도(예: 2019)
  • %l — 12시간제 시간(앞자리 0 없음)
  • %i — 분(00 ~ 59)
  • %p — 오전/오후 표시(AM 또는 PM)

1. 예제 테이블 생성

위 구문을 실제로 확인하기 위해 테이블을 먼저 만들어 보겠습니다. 테이블 생성 쿼리는 다음과 같습니다.

mysql> create table unixTimeStampFormatDemo
    -> (
    -> Id int NOT NULL AUTO_INCREMENT PRIMARY KEY,
    -> MyTimeStampValue bigint
    -> );
Query OK, 0 rows affected (0.59 sec)

2. 샘플 데이터 삽입

insert 명령으로 몇 개의 Unix 타임스탬프 값을 입력합니다.

mysql> insert into unixTimeStampFormatDemo(MyTimeStampValue) values(1334428200);
Query OK, 1 row affected (0.20 sec)
mysql> insert into unixTimeStampFormatDemo(MyTimeStampValue) values(1513881000);
Query OK, 1 row affected (0.15 sec)
mysql> insert into unixTimeStampFormatDemo(MyTimeStampValue) values(1542738600);
Query OK, 1 row affected (0.14 sec)
mysql> insert into unixTimeStampFormatDemo(MyTimeStampValue) values(1551637800);
Query OK, 1 row affected (0.15 sec)

3. 저장된 데이터 확인

select 문으로 테이블의 전체 레코드를 조회합니다.

mysql> select *from unixTimeStampFormatDemo;

실행 결과는 다음과 같습니다.

+----+------------------+
| Id | MyTimeStampValue |
+----+------------------+
|  1 | 1334428200       |
|  2 | 1513881000       |
|  3 | 1542738600       |
|  4 | 1551637800       |
+----+------------------+
4 rows in set (0.00 sec)

4. Unix 타임스탬프를 날짜 형식으로 변환

이제 from_unixtime()과 date_format()을 사용해 Unix 타임스탬프를 읽기 쉬운 datetime 형식으로 변환해 보겠습니다.

mysql> select date_format(from_unixtime(MyTimeStampValue), '%b %d, %Y %l:%i %p PDT') from unixTimeStampFormatDemo;

변환 결과는 다음과 같습니다.

+-----------------------------------------------------------------------+
| date_format(from_unixtime(MyTimeStampValue), '%b %d, %Y %l:%i %p PDT') |
+-----------------------------------------------------------------------+
| Apr 15, 2012 12:00 AM PDT                                             |
| Dec 22, 2017 12:00 AM PDT                                             |
| Nov 21, 2018 12:00 AM PDT                                             |
| Mar 04, 2019 12:00 AM PDT                                             |
+-----------------------------------------------------------------------+
4 rows in set (0.00 sec)

참고 사항

from_unixtime()은 MySQL 서버의 타임존(time_zone) 설정을 따르므로, 환경에 따라 결과 시간이 다르게 표시될 수 있습니다. 특정 시간대(PDT 등)를 명확하게 반영하고 싶다면 convert_tz() 함수를 함께 사용하거나 세션의 time_zone 변수를 조정하면 됩니다. 또한 밀리초 단위 타임스탬프라면 from_unixtime(컬럼명/1000)처럼 값을 나눈 뒤 변환해야 합니다.