mysql timestamp

mysql에서 reg_date 값을 timestamp 로 사용하기 위한 간단 설명

mysql의 날자를 계산 하기 위하여 reg_date 라는 컬럼에 int 값을 주어 타임스템프 값을 정수로 입력했다. 정수이기 때문에 계산을 할 수 있고 php 에서 date() 함수를 사용해서 눈에 보기 편한 설정으로 날자를 만들 수 있기 때문이다.

그렇지만 이런 코딩은 아주 구시대적이다. 나처럼 노친네들만 냄새를 풍기면서 쓰는 수십년 전의 방식이다. 현재는 timestamp라는 컬럼을 사용한다. 아래와 같이 새롭게 테이블을 만들 때 쓸 수 있는 예제가 있다.

CREATE TABLE myTable(
no int NOT NULL AUTO_INCREMENT,
user_name VARCHAR(16) DEFAULT NULL,
reg_date TIMESTAMP DEFAULT CURRENT_TIMESTAMP
) DEFAULT CHARSET utf8;

위와 같이 테이블을 만들고 사용자 이름만 인서트하면 자동으로 현재의 시간이 reg_date에 들어 간다. 그렇지만 내용을 셀렉트 해보면 정수가 아니라 우리가 평소에 읽을 수 있는 시간이 텍스트로 들어 가 있다.

2019-07-01 00:00:00

위와 같은 모양이다. 대한민국 사람들이 읽기 편한 모양이다. 위와 같은 모양을 많이 쓰지만 가끔 정수가 필요할 수 있다. 그 때 아래의 쿼리를 사용한다.

SELECT user_name, unix_timestamp(reg_date) as IntRegDate FROM myTalbe;

위의 쿼리를 날렸을 때 정수로 된 reg_date 값을 얻을 수 있다.

reg_date 값을 정수로 저장하던 시절은 정말 오래 전이다. 아마도 2002년 월드컵 때나 그런 식의 코딩을 했을 것 같다. 시대가 바뀌었으면 그에 맞춰 가야 됨에도 불구하고 나이 탓을 하면서 옛날 젊은 시절에 머무르려고 한다.

나이가 60이 되어서도 이삼십 대 때에 들었던 음악을 고집한다. 길을 걷다 보면 노친네가 스마트폰으로 음악을 틀고 저 앞에서 걸어 온다. 그 노친네가 젊었던 시절에 유행하던 음악이다. 시간은 누구에게나 그런 식으로 멈추어 있는 것 같다.