MySQL TIMESTAMP 필드에 사용자 지정 날짜 삽입하기
MySQL에서 TIMESTAMP 타입의 컬럼에 원하는 특정 날짜와 시간을 직접 삽입해야 하는 경우가 종종 있습니다. 이때 주의할 점은 UNIX_TIMESTAMP() 함수를 사용하면 안 된다는 것입니다.
UNIX_TIMESTAMP() 함수는 입력한 날짜와 시간에 대응하는 정수값(유닉스 타임스탬프)을 반환합니다. 즉, 우리가 원하는 '날짜 형태의 값'이 아니라 단순한 숫자가 반환되기 때문에, TIMESTAMP로 정의된 컬럼에는 적합하지 않습니다.
실제로 확인해 보면 다음과 같습니다.
mysql> select UNIX_TIMESTAMP('2019-01-09 15:48:23') AS IntegerValue;실행 결과:
+--------------+ | IntegerValue | +--------------+ | 1547029103 | +--------------+ 1 row in set (0.00 sec)
위 결과에서 볼 수 있듯이, UNIX_TIMESTAMP() 함수는 해당 날짜와 시간에 대응하는 정수값을 반환합니다. 따라서 TIMESTAMP 컬럼에 날짜를 삽입할 때는 이 함수 대신 일반적인 INSERT 문을 사용해야 합니다.
사용자 지정 날짜 삽입 구문
TIMESTAMP 컬럼에 원하는 날짜와 시간을 삽입하는 기본 구문은 다음과 같습니다.
INSERT INTO yourTableName(yourColumnName)
VALUES('yourCustomDateTime');예제: 테이블 생성 및 데이터 삽입
구문을 이해하기 위해 먼저 테이블을 생성해 보겠습니다.
mysql> create table TimestampDemo
-> (
-> Id int NOT NULL AUTO_INCREMENT,
-> yourTimestamp TIMESTAMP,
-> PRIMARY KEY(Id)
-> );
Query OK, 0 rows affected (2.14 sec)이제 TIMESTAMP 필드에 사용자 지정 날짜를 삽입합니다.
mysql> insert into TimestampDemo(yourTimestamp) values('2019-01-09 15:48:23');
Query OK, 1 row affected (0.37 sec)
mysql> insert into TimestampDemo(yourTimestamp) values('2018-03-14 16:04:23');
Query OK, 1 row affected (0.37 sec)
mysql> insert into TimestampDemo(yourTimestamp) values('2017-12-10 10:08:20');
Query OK, 1 row affected (0.16 sec)
mysql> insert into TimestampDemo(yourTimestamp) values('2016-04-05 13:45:21');
Query OK, 1 row affected (0.30 sec)결과 확인
SELECT 문을 사용하여 테이블의 모든 레코드를 조회해 보겠습니다.
mysql> select *from TimestampDemo;
실행 결과:
+----+---------------------+ | Id | yourTimestamp | +----+---------------------+ | 1 | 2019-01-09 15:48:23 | | 2 | 2018-03-14 16:04:23 | | 3 | 2017-12-10 10:08:20 | | 4 | 2016-04-05 13:45:21 | +----+---------------------+ 4 rows in set (0.00 sec)
위 출력에서 확인할 수 있듯이, 각 레코드에 지정한 날짜와 시간이 그대로 TIMESTAMP 필드에 저장된 것을 볼 수 있습니다. 참고로 MySQL은 'YYYY-MM-DD HH:MM:SS' 형식의 문자열을 자동으로 인식하여 TIMESTAMP 값으로 변환해 주므로, 별도의 변환 함수 없이 INSERT 문만으로 손쉽게 사용자 지정 날짜를 삽입할 수 있습니다.