MySQL에서 날짜를 UNIX 타임스탬프로 변환하려면 UNIX_TIMESTAMP() 함수를 사용하면 됩니다. 이 함수는 지정한 날짜 값을 1970년 1월 1일 00:00:00 UTC 이후 경과한 초 단위의 정수 값으로 반환합니다.
1. 테이블 생성
먼저 날짜 데이터를 저장할 테이블을 생성합니다.
mysql> create table DemoTable1997 ( DueDate date ); Query OK, 0 rows affected (0.58 sec)
2. 샘플 데이터 삽입
INSERT 문을 사용하여 테이블에 날짜 레코드를 추가합니다.
mysql> insert into DemoTable1997 values('2018-10-11');
Query OK, 1 row affected (0.17 sec)
mysql> insert into DemoTable1997 values('2019-12-21');
Query OK, 1 row affected (0.17 sec)
mysql> insert into DemoTable1997 values('2017-01-31');
Query OK, 1 row affected (0.11 sec)3. 저장된 데이터 확인
SELECT 문으로 테이블의 모든 레코드를 조회해 보겠습니다.
mysql> select * from DemoTable1997;
실행 결과는 다음과 같습니다.
+------------+ | DueDate | +------------+ | 2018-10-11 | | 2019-12-21 | | 2017-01-31 | +------------+ 3 rows in set (0.00 sec)
4. UNIX_TIMESTAMP()로 변환하기
이제 UNIX_TIMESTAMP() 함수와 CAST()를 함께 사용하여 YYYY-MM-DD 형식의 날짜를 UNIX 타임스탬프로 변환하는 쿼리입니다.
mysql> select unix_timestamp(cast(DueDate as date)) as Result from DemoTable1997;
위 쿼리를 실행하면 다음과 같은 결과가 출력됩니다.
+------------+ | Result | +------------+ | 1539196200 | | 1576866600 | | 1485801000 | +------------+ 3 rows in set (0.00 sec)
참고 사항
UNIX_TIMESTAMP()는 인자 없이 호출하면 현재 시각의 타임스탬프를 반환하고, 날짜 문자열을 직접 전달할 수도 있습니다. 예를 들어 SELECT UNIX_TIMESTAMP('2018-10-11');처럼 사용하면 별도의 CAST 과정 없이 바로 변환 결과를 얻을 수 있습니다. 또한 반환되는 값은 MySQL 서버의 타임존 설정에 따라 달라질 수 있으므로, 정확한 변환을 위해서는 서버의 time_zone 설정을 확인하는 것이 좋습니다.