서론

날자 컨트롤 하는 부분은 간단하면서도 복잡하다. mysql 에서 지원하는 아래 함수들로 날자 연산을 쉽게 할 수 있다.

 

 

본론

DATE_ADD(date,INTERVAL expr  unit), DATE_SUB(date,INTERVAL expr  unit)

함수의 기본형은 위와 같고 INTERVAL 키워드의 형태는 아래와 같이 쓰인다.

unit Value 형태
MICROSECOND MICROSECONDS
SECOND SECONDS
MINUTE MINUTES
HOUR HOURS
DAY DAYS
WEEK WEEKS
MONTH MONTHS
QUARTER QUARTERS
YEAR YEARS

SECOND_MICROSECOND

'SECONDS.MICROSECONDS'

MINUTE_MICROSECOND 'MINUTES:SECONDS.MICROSECONDS'
MINUTE_SECOND 'MINUTES:SECONDS'
HOUR_MICROSECOND 'HOURS:MINUTES:SECONDS.MICROSECONDS'
HOUR_SECOND 'HOURS:MINUTES:SECONDS'
HOUR_MINUTE 'HOURS:MINUTES'
DAY_MICROSECOND 'DAYS HOURS:MINUTES:SECONDS.MICROSECONDS'
DAY_SECOND 'DAYS HOURS:MINUTES:SECONDS'
DAY_MINUTE 'DAYS HOURS:MINUTES'
DAY_HOUR 'DAYS HOURS'
YEAR_MONTH

'YEARS-MONTHS'

 

위에서 지원되는 DATE_ADD, DATE_SUB 함수는 사용자 편의를 위해 +,- 연산자 형태로도 사용할 수 있다. 아래 와 같은 형태로 사용 될 수 있다.

mysql> SELECT '2008-12-31 23:59:59' + INTERVAL 1 SECOND;
        -> '2009-01-01 00:00:00'
mysql> SELECT INTERVAL 1 DAY + '2008-12-31';
        -> '2009-01-01'
mysql> SELECT '2005-01-01' - INTERVAL 1 SECOND;
        -> '2004-12-31 23:59:59'
mysql> SELECT DATE_ADD('2000-12-31 23:59:59',
    ->                 INTERVAL 1 SECOND);
        -> '2001-01-01 00:00:00'
mysql> SELECT DATE_ADD('2010-12-31 23:59:59',
    ->                 INTERVAL 1 DAY);
        -> '2011-01-01 23:59:59'
mysql> SELECT DATE_ADD('2100-12-31 23:59:59',
    ->                 INTERVAL '1:1' MINUTE_SECOND);
        -> '2101-01-01 00:01:00'
mysql> SELECT DATE_SUB('2005-01-01 00:00:00',
    ->                 INTERVAL '1 1:1:1' DAY_SECOND);
        -> '2004-12-30 22:58:59'
mysql> SELECT DATE_ADD('1900-01-01 00:00:00',
    ->                 INTERVAL '-1 10' DAY_HOUR);
        -> '1899-12-30 14:00:00'
mysql> SELECT DATE_SUB('1998-01-02', INTERVAL 31 DAY);
        -> '1997-12-02'
mysql> SELECT DATE_ADD('1992-12-31 23:59:59.000002',
    ->            INTERVAL '1.999999' SECOND_MICROSECOND);
        -> '1993-01-01 00:00:01.000001'

 

 

결론

날자 연산에서 +,- 연산자의 지원으로 정말 편리하게 연산할 수 있게 되었다.

' > Mysql' 카테고리의 다른 글

MYSQL 글자 붙이기  (44) 2007.07.23
MYSQL LAST_INSERT_ID()  (26) 2007.07.20
MYSQL JOIN 구문  (1087) 2007.06.10
MYSQL EUC-KR 을 UTF-8 로 변경하기  (682) 2007.03.09
MYSQL 유용한 명령어들  (26) 2006.12.18
by cranix 2009. 8. 19. 17:03
| 1 |