본문 바로가기

디버깅/MySQL, MariaDB

[SQL] MySQL에서 현재 시간을 쿼리에 담고자 할 때

반응형


주로 Oracle의 DB를 이용할 때, 현재 시간을 담고자 한다면 데이터 형을 DATE로 만들고 컬럼에 SYSDATE를 담으면 알아서 되곤 했다.

예시) INSERT INTO table_name   ( WRITE_DATA )  VALUES ( SYSDATE );



하지만 MySQL에서는 버전을 기준으로 방법이 조금 다른데, V5.6 를 기준으로 이전 버전에서는 now(), sysdate() 함수를 이용하면 Oracle과 같은 형태로 사용이 가능했다고 한다.


그리고 V5.6 이상의 버전에서는 이 방법을 권장하진 않는다. (확인 결과 지금은 잘된다. 분명 안되서 메모를 해둔 것 같은데-_-)


컬럼 자체에 default 값을 따로 주면 알아서 데이터를 insert할 때, 그 시간이 기록되는 형태를 가진다. (오라클에선 시퀀스를 이용하고, MySQL에선 Default 값을 정해주는 식..) 그때 CURRENT_TIMESTAMP 라는 걸 사용 하면 된다.

단 CURRENT_TIMESTAMP를 사용 하기 위해서는 데이터 타입도 TIMESTAMP를 사용해야 한다!



예시) ALTER TABLE `TABLE_NAME ` CHANGE `COLUMN_NAME ` `COLUMN_NAME ` TIMESTAMP ON UPDATE CURRENT_TIMESTAMP DEFAULT CURRENT_TIMESTAMP NOT NULL;

CREATE TABLE_NAME COLUMN_NAME (  COLUMN_NAME TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP);



찾고 보니 MySQL 레퍼런스에 종류 별로 정말 잘 정리가 되어있다 -_-) 



참고 출처 :

http://www.cikorea.net/bbs/view/tip?idx=8089

https://dev.mysql.com/doc/refman/5.5/en/timestamp-initialization.html

http://jsonobject.tistory.com/122

반응형