리눅스나 유닉스에서 시간 처리할 때 흔하게 사용하는 것이 유닉스시간(Unixtime)이다.
대부분의 함수도 지원을 하고 불편함이 없이 사용하는 데 유독 DB에서는 자주 사용하지 않게 되서 꼭 필요할 때는 기억이 안난다.....-_-;;
1) Unixtime -> Date 형식(일반적인 시간)으로 변환
SELECT user_id, FROM_UNIXTIME(`regdate`,'%Y%m%d %H%i%s') FROM member
: from_unixtime 이라는 MySQL 함수를 이용해서 입력받은 Unixtime 값을 일반적으로 사용하는 시간으로 변환한다. 이때 사용하는 "%" 값들은 PHP나 기타 프로그램에서 사용하는 시간 표현 문자와 동일하다. (PHP 의 date 함수 설명)
2) 현재 시간을 Unixtime으로 구하기
SELECT UNIX_TIMESTAMP()
3) 지정한 Date형식(일반적인 시간) ->Unixtime 으로 변환
SELECT UNIX_TIMESTAMP('2009-05-15 20:11:22')
: 이 때 입력하는 시간은 '년-월-일' 만 입력해도 된다.
4) 시간 더하기 & 빼기
SELECT DATE_ADD(now(), INTERVAL 1 day))
: 현재 시간에서 1일을 더한다.
SELECT DATE_ADD(now(), INTERVAL -1 day))
: 현재 시간에서 1일을 뺀다.
* day 부분에 들어가는 unit은...
- year : 년
- month : 월
- day : 일
- hour : 시간
- minute : 분
- secont : 초
5) 원하는 형태로 보기
SELECT DATE_FORMAT(regdate, "%Y%m%d %H%i%s") FROM users
: regdate 시간 필드를 20000526 102012 형식의 시간으로 표시한다.
이 외에도 아래과 같은 많은 시간 관련 함수가 존재한다.
(자세한 내용은 http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html 참고)
DAYOFWEEK(date) : 요일을 정수로 반환(1=일요일, 7=토요일)
DAYOFMONTH(date): 월의 몇번째 날인지를 정수로 반환
DAYOFYEAR(date) : 년중 몇번째 날인지를 정수로 반환
MONTH(date) : 월을 1∼12의 정수로 반환
DAYNAME(date) : 요일 이름을 문자로 반환
MONTHNAME(date) : 월 이름을 문자로 반환
YEAR(date) : 년도를 4자리 정수로 반환
나머지도 응용하면 이용이 가능할 것이다.