2023. 12. 22. 17:00ㆍDatabase/MySQL
데이터에 데이터를 생성하거나 업데이트 시 현재 시간을 등록하기 위한 방법에 대해 알아봅니다.
위의 상황에서는 now() 함수를 사용하며, 다양한 사용방법으로 데이터를 편하게 등록할 수 있습니다.
now()
현재 날짜 및 시간 값을 가져 오는 데 사용됩니다.
결과 값은 컨텍스트에 따른 문자열 또는 숫자 값이며,
반환되는 값은 'YYYY-MM-DD hh:mm:ss' 또는 YYYYMMDDhhmmss 형식입니다.
insert into comments
(content, createdAt)
values
('맛있었어요.', now());
데이터 등록시 위와 같은 방식으로 함수를 사용하면 데이터가 저장되는 순간 날짜와 현재 시각이 저장됩니다.
데이터 insert시 매번 now() 함수를 사용하여 넣을 필요없이
테이블 설정 내의 오른쪽 컬럼의 디폴트 값으로 설정하여 편하게 사용이 가능합니다.
이후에는 해당 컬럼의 값을 따로 잡아주지 않아도 디폴트 값(now() 함수)으로 자동으로 적용됩니다.
insert into comments
(content)
values
('줄서서라도 먹습니다.');
데이터 수정(update)시에 시각의 기록하기 위한 updatedAt 컬럼에는
데이터가 수정되는 시각을 기록할 수 있도록 아래와 같이 씁니다.
update comments
set content = '지금 생각해보니 별로네요', updatedAt = now()
where id = 1;
이 부분을 테이블에 컬럼의 디폴트 값으로 설정하기 위해
on update now()
위의 문구를 작성하여 넣어줍니다.
이후 update문을 통해 데이터가 수정되면 수정된 날짜와 시간으로 데이터가 저장되어 아래와 같이 표시됩니다.
위의 사진과 같이 컬럼의 중간중간이 null로 되어 있으면 해당 칸에는 데이터가 없다는 의미로
null 값으로 인해 데이터 처리나 관리가 복잡해질 수 있어 가능한한 데이터는 null값으로 두지 않게끔 합니다.
updatedAt은 데이터가 수정되는 날짜와 시간의 데이터를 넣는 부분으로
테이블내의 updatedAt 컬럼에 default 값을 설정하여 기본적으로 값이 들어갈 수 있게 합니다.
now() on update now()
위의 문구를 기재하여 컬럼의 값을 따로 넣지 않아도 데이터가 생성된 날짜와 시간이 값이 createdAt과 동일하게 저장되고
이후에 데이터가 update(수정, 변경)되는 경우 update되는 날짜와 시간으로 새로 저장됩니다.
테이블을 apply를 하고 나면 아래와 같이 멘트가 바뀌며
현재 시간으로 timestamp된다는 의미로 now() 함수의 의미와 동일합니다.