MySQL에서 MM/DD/YY 형식으로 저장된 날짜 문자열을 Unix 타임스탬프로 변환하려면 STR_TO_DATE() 함수와 UNIX_TIMESTAMP() 함수를 함께 사용하면 됩니다. 기본 문법은 다음과 같습니다.
SELECT UNIX_TIMESTAMP(STR_TO_DATE(yourColumnName, '%m/%d/%Y')) FROM yourTableName;
1. 테이블 생성하기
먼저 예제에 사용할 테이블을 생성합니다.
mysql> CREATE TABLE DemoTable
(
Id int NOT NULL AUTO_INCREMENT PRIMARY KEY,
dateConvertToUnix varchar(100)
);
Query OK, 0 rows affected (0.58 sec)2. 샘플 데이터 삽입하기
INSERT 문을 사용해 MM/DD/YYYY 형식의 날짜 데이터를 몇 개 입력합니다.
mysql> INSERT INTO DemoTable(dateConvertToUnix) VALUES('01/10/2001');
Query OK, 1 row affected (0.16 sec)
mysql> INSERT INTO DemoTable(dateConvertToUnix) VALUES('03/31/2010');
Query OK, 1 row affected (0.15 sec)
mysql> INSERT INTO DemoTable(dateConvertToUnix) VALUES('12/31/2016');
Query OK, 1 row affected (0.13 sec)
mysql> INSERT INTO DemoTable(dateConvertToUnix) VALUES('04/27/2019');
Query OK, 1 row affected (0.10 sec)3. 저장된 데이터 확인하기
SELECT 문으로 테이블의 전체 레코드를 조회합니다.
mysql> SELECT * FROM DemoTable;
위 쿼리는 다음과 같은 결과를 출력합니다.
+----+-------------------+ | Id | dateConvertToUnix | +----+-------------------+ | 1 | 01/10/2001 | | 2 | 03/31/2010 | | 3 | 12/31/2016 | | 4 | 04/27/2019 | +----+-------------------+ 4 rows in set (0.00 sec)
4. Unix 타임스탬프로 변환하기
이제 UNIX_TIMESTAMP()와 STR_TO_DATE()를 조합하여 날짜 문자열을 Unix 타임스탬프로 변환합니다. 여기서 %m/%d/%Y는 '월/일/년' 형식을 의미하는 포맷 지정자입니다.
mysql> SELECT UNIX_TIMESTAMP(STR_TO_DATE(dateConvertToUnix, '%m/%d/%Y')) FROM DemoTable;
실행 결과는 다음과 같습니다.
+------------------------------------------------------------+ | UNIX_TIMESTAMP(STR_TO_DATE(dateConvertToUnix, '%m/%d/%Y')) | +------------------------------------------------------------+ | 979065000 | | 1269973800 | | 1483122600 | | 1556303400 | +------------------------------------------------------------+ 4 rows in set (0.00 sec)
참고 사항
STR_TO_DATE()는 문자열을 MySQL의 DATETIME 값으로 해석하고, UNIX_TIMESTAMP()는 해당 시각을 1970년 1월 1일 00:00:00 UTC 이후 경과한 초 단위 정수로 반환합니다. 만약 시간 정보까지 포함된 형식이라면 포맷 지정자에 %H:%i:%s 등을 추가로 지정하면 됩니다. 또한 결과값의 정확성은 서버의 타임존(time_zone) 설정에 영향을 받으므로, 필요에 따라 CONVERT_TZ()를 활용하는 것도 좋습니다.