가끔 테이블을 만들다보면, 튜플(데이터 행 이라고 이해하자) 이 만들어진 시간을 저장해야 할 경우가 있다. 예를 들어, 게시판에 글을 쓸 경우, 게시판이 써진 시간을 저장해야 하는 경우가 있다. 이 때 사용할 수 있는 것이 now() 함수 이다.
create table PostBox(
content varchar(150),
birth timestamp not null default now(),
)
위에서 처럼 default 값을 now() 로 주게 되면, 테이블의 값을 저장할 때마다 따로 birth 컬럼에 값을 입력하지 않고 null 을 입력할 경우, now() 값이 반환하는 현재 시간을 저장한다. 참고로 여기서, timestamp 타입으로 해줘야 한다. datetime 은 되지 않고 에러를 발생시킨다.
자 그럼, now() 와 sysdate() 의 차이는 무엇인가??
now() 는 쿼리문이 실행되는 시간의 값을 저장하고, sysdate() 는 해당 함수가 호출되는 순간의 시간을 저장한다.
아래의 결과를 비교해 보라.
mysql>SELECT NOW(), SLEEP(2), NOW();
+---------------------+----------+---------------------+ | NOW() | SLEEP(2) | NOW() | +---------------------+----------+---------------------+ | 2006-04-12 13:47:36 | 0 | 2006-04-12 13:47:36 | +---------------------+----------+---------------------+ mysql>SELECT SYSDATE(), SLEEP(2), SYSDATE();
+---------------------+----------+---------------------+ | SYSDATE() | SLEEP(2) | SYSDATE() | +---------------------+----------+---------------------+ | 2006-04-12 13:47:44 | 0 | 2006-04-12 13:47:46 | +---------------------+----------+---------------------+
'MySQL' 카테고리의 다른 글
MySQL :: inner join :: (이너)조인과 인덱스의 실험!!! (explain 활용) (0) | 2011.06.02 |
---|---|
MySQL :: foreign key 사용하기, on update cascade, on delete set null (1) | 2011.05.26 |