하츠의 꿈

[MySQL] Unixtime 및 시간 관련 쿼리 모음 본문

엔지니어스 마인드/Database

[MySQL] Unixtime 및 시간 관련 쿼리 모음

명섭이 2009. 5. 15. 20:46

리눅스나 유닉스에서 시간 처리할 때 흔하게 사용하는 것이 유닉스시간(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자리 정수로 반환

 

나머지도 응용하면 이용이 가능할 것이다.


Comments