DB관련/MySQL

[펌]mysql 한달전 데이터 삭제(Shell code , sql query)

saltdoll 2008. 10. 23. 00:26
반응형
mysql 에서 로그를 남겨두는데,
용량을 많이 차지해서 일정기간이 지난후에 자동으로 삭제하도록 구성해 두었습니다.

기존에는 unix shell(bash) 코드를 이용해 처리했는데, 플랫폼(?) 호환성을 높이기 위해
sql query 로 바꿔보았습니다.

주절주절이야기 했지만, 코드는 간단합니다.

날짜를 구하는 것이 핵심(shell 이냐, sql 이냐 의 차이)
LOGDATE=`/bin/date +%Y/%m/%d --date '1 month ago'`
mysql log_db -e "delete from log where log_date < '$LOGDATE';"
이런 간단한 코드입니다.(bash)

mysql 의 쿼리로만 작성하면 다음과 같습니다.
mysql log_db -e "delete from log where log_date < DATE_FORMAT( CURDATE() + INTERVAL -1 MONTH , '%Y/%m/%d' ) ; "

DATE_FORMAT( CURDATE() + INTERVAL -1 MONTH , '%Y/%m/%d' )
이 부분이 날짜를 구하는 부분입니다. ( MONTH 대신에 DAY 등.. )


워낙 방법이 많아서, 그 중 하나의 방법이다. 라는 의미에서 남깁니다.

1년전, 하루전 등의 옵션은 아래 참조 링크에서 포맷옵션을 바꾸면 됩니다.

# 참조 : http://dev.mysql.com/doc/refman/5.0/en/date-and-time-functions.html
출처: http://taemy.experlab.com/350
반응형