서론

날자 컨트롤 하는 부분은 간단하면서도 복잡하다. 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

PHP 에서 날짜 출력할때 사용하는 함수.

date(format,timestamp)

a : "am" or "pm" 표시
A : "AM" or "PM" 표시
d : 오늘이 몇일인지 표시 "01" to "31"
D : 영문으로 요일을 표시 "Mon", "Fri"
F : 영문으로 달을 표시 "January", "July"
h : 12시간을 표시. 오후 3시라도 03으로 표시. "01" to "12"
H : 24시간을 표시. 오후 3시 경우 15로 표시. "00" to "23"
g : 12시간을 표시. h와 다른 점은 0이 없다. "1" to "12"
G : 24시간을 표시. H와 다른점은 0이 없다. "0" to "23"
i : 분을 표시. "00" to "59"
j : 오늘이 몇일인지 표시. d와 다른 점은 0이 앞에 없다. "1" to "31"
l(소문자 엘) : "Friday"식으로 표시
m : 달(month)을 표시. "01" to "12"
n : 달을 표시. 0없이 "1" to "12"
M : "Jan"으로 표시
s : 초(sec)를 표시 "00" to "59"
t : 이번 달의 마지막 표시 "28" 부터 "31"일 까지
U : 기준 시점(GMT 1970년 1월 1일 00:00:00)으로부터 지난 시간을 초로 표시
w : 이번 주를 숫자로 표시 "0"(일요일) 부터 "6"(토요일)로 표시
Y : 연도(year)를 4자리로 표시. "2001"
y : 연도를 2자리로 표시. "01"
z : 올해부터의 날(day) 표시. "0" 부터 "365" 로 표시

strtotime(datestr) : 스트링형태의 날짜를 php timestamp 로 바꿔주는 함수
- mysql 날짜 함수를 그대로 php 로 바꿀때 많이 쓰인다.
by cranix 2007. 8. 15. 22:37
| 1 |