ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • MySQL commend 출력 및 명령어
    Data Base/MySQL 2007. 11. 28. 11:43

    MySQL 함수 2-1 날짜 및 시간 관련 칼럼 함수 첫번째

    아노..함수 입니다..

    갠적으로 싫어하는 게 함수라..

    양은 양대로 많고..이해한다고 해도..

    놓치지 쉬운 부분이라..

    실제로 사용하는 거 몇가지 빼고는..

    거의 모르고 살게 되지요..

    예전 웹마스터 교육 받고..

    그 당시 인기던..

    pure lite dream 아이콘 방명록..

    이름이 맞나 모르겠네..

    그거 제작자한테 허락맞고 cgi 였던거를

    php 로 컨버팅한적 있는데..

    웹프로그래밍 만들때는 MySQL 보다 php 함수가 더 큰 영향을 받아서..

    MySQL 기분 문법 select insert update delete 밖에 안 썻었지..

    지금 보니..

    최종 수정 시간 입력할때..

    단지..MySQL 함수 하나로 끝날 수 있었네..

    php 로 할때..

    일일히 시간 구해서 업데이트 방식 썻었는데..

    머 이로서..

    짜기전에 함수 한번 정도 알아 두면 좋다 ㅇㅅㅇ

    라는 거지요..

    그럼 시작 하겠습니다.

     

    ----------------------------------------------------------------------------------------

     

    - 날짜 및 시간 관련 함수

     

     날짜 시간 관련 칼럼 타입

     

    - 날짜 관련 타입은 문자 칼럼 타입 (char, varchar 등), 숫자 칼럼 타입 (int, smallint 등)

    - 과 함깨 가장 많이 사용되는 칼럼이다.

     

    - DATE

    - 날짜 타입이다. '1000 - 01 - 01' 에서 '9999 - 12 - 31' 까지 나타낼 수 있다.

    - 기본적으로 지원 하는 형태는 'YYYY - MM - DD' 이다.

     

    - DATETIME

    - 날짜와 시간이 합쳐진 형태이다. '1000 - 01 - 01 00:00:00' 에서 '9999 - 12 - 31 23:59:59'

    - 까지 나타낼 수 있다.

    - 기본적으로 지원하는 형태는 'YYYY - MM - DD HH:MM:SS' 이다.

     

    - TIMESTAMP[(M)]

    - 날짜 및 시간 타입이다. '1970 - 01 - 01 00:00:00' 에서 2037 년 어느 때까지 나타낸다.

    - [(M)] 자리에는 출력될 길이를 나타내는 숫자를 쓸 수 있는데 14 나 12 나 8 혹은 6 을

    - 쓸수 있다. 숫자를 쓰지 않으면 기본적으로 14 자리로 나타낸다.

    - TIMESTAMP 의 특징은 자동 변경 칼럼 타입이라는 것이다. 이것은 INSERT 나 UPDATE

    - 문을 사용할때 매우 유용하다.

     

    mysql> desc customers;
    +--------------+---------------+------+-----+---------+----------------+
    | Field             | Type               | Null   | Key | Default   | Extra                |
    +--------------+---------------+------+-----+---------+----------------+
    | customers_id | int(5)               |         | PRI | NULL     | auto_increment  |
    | gender          | char(1)            |         |      |              |                        |
    | name            | varchar(32)      |         |       |              |                        |
    | job               | varchar(30)      |         |       |              |                        |
    | email            | varchar(35)      |         |       |              |                        |
    | address        | varchar(100)     |         |       |             |                        |
    | telephone      | varchar(14)      |         |       |              |                       |
    | registdate      | date                | YES  |       | NULL     |                        |
    | modifydate     | timestamp(14)   | YES  |       | NULL     |                        |
    | password      | varchar(12)      |         |       |             |                        |
    +--------------+---------------+------+-----+---------+----------------+
    10 rows in set (0.06 sec)

    mysql>

     

    - 현재 customers 테이블의 modifydate 칼럼은 TIMESTAMP(14) 로 정의되어 있다.

     

    mysql> select name, telephone, modifydate from customers where name = '장영실';
    +--------+--------------+----------------+
    | name    | telephone      | modifydate        |
    +--------+--------------+----------------+
    | 장영실  | 051-665-6789  | 20020903162508  |
    +--------+--------------+----------------+
    1 row in set (0.00 sec)

    mysql>

     

    - 장영실 이라는 고객에 대해 다음과 같은 데이터가 들어있다.

     

    mysql> update customers set telephone = '051-665-1234' where name = '장영실';
    Query OK, 1 row affected (0.45 sec)
    일치하는 Rows : 1개 변경됨: 1개  경고: 0개

     

    - 위와 같이 '장영실' 의 전화번호를 update 문으로 변경하여 보다.

     

    mysql> select name, telephone, modifydate from customers where name = '장영실';
    +--------+--------------+----------------+
    | name    | telephone      | modifydate        |
    +--------+--------------+----------------+
    | 장영실  | 051-665-1234  | 20061005162108  |
    +--------+--------------+----------------+
    1 row in set (0.00 sec)

    mysql>

     

    - 전화번호만 변경 했음에도 불구하고 자동으로 modifydate 칼럼의 값도 현재 날짜로

    - 변경되는 것을 볼 수 있다. 즉 TIMESTAMP 칼럼은 데이터가 수정된 날짜를

    - 자동으로 체크하는데 유용하게 사용할 수 있는 칼럼이다.

     

    - TIME

    - 시간 타입니다. '-838:59:59' 에서 '838:59:59' 까지 나타낼 수 있다.

    - 기본적으로 지원하는 형태는 'HH:MM:SS' 이다.

     

    - YEAR

    - 연도를 나타내는 타입이다. 2자리 혹은 4자리로 나타낼 수 있으며 자리수를 정하지 않으면

    - 기본적으로 4자리로 나타낸다. 4자리로 사용할 때는 1901에서 2155년까지 지원하며

    - 2자리로 사용할 때는 1970에서 2069년짜지 지원한다. (70-69)

     

    - 위의 것은 칼럼을 생성할 때 옵션 문으로 들어 간다.

     

    날짜 및 시간 관련 함수

     

    - MySQL 에서는 날짜 및 시간 관련하여 매우 다양하고 유용한 함수들을 지원한다.

     

    mysql> select name, modifydate from customers;
    +----------+----------------+
    | name      | modifydate         |
    +----------+----------------+
    | 방정환    | 20020213150234   |
    | 한용운    | 20011124201452   |
    | 김정호    | 20011124230126   |
    | 허난설헌 | 20000305092412   |
    | 우장춘    | 20020312183521   |
    | 장영실    | 20061005162108   |
    | 안익태    | 20010824010354   |
    | 신사임당 | 20020317224541   |
    | 허준       | 20020816175657   |
    | 황진이    | 20011230204703   |
    +----------+----------------+
    10 rows in set (0.00 sec)

    mysql>

     

    - 다음 예는 customers 테이블로부터 지난 30일간 변경된 적이 있는 로우룰 추출하는 예이다.

     

    mysql> select name, modifydate from customers where to_days(now()) - to_days(modifydate) <= 30;
    +--------+----------------+
    | name    | modifydate        |
    +--------+----------------+
    | 장영실  | 20061005162108  |
    +--------+----------------+
    1 row in set (0.47 sec)

    mysql>

     

    - 지금부터 TO_DAYS(), NOW() 와 같은 날짜 및 시간 관련 함수들을 하나씩 알아 보겠다.

    - to_days(now()) - to_days(modifydate) <= 30;

    - 현재 날짜 시간 - 각 로우의 최종수정된 시간 의 값이 30 보다 적을 것 을 나타냄

     

    - DAYOFWEEK(date)

    - 지정한 날짜가 그 주의 몇번째 요일인가를 가져온다.(1=일요일, 2=월요일, ... 7=토요일)

    - 2006년 10월 5일은 목요일이므로 5번째 요일이다.

     

    mysql> select dayofweek('2006-10-5');
    +------------------------+
    | dayofweek('2006-10-5')  |
    +------------------------+
    |                      5             |
    +------------------------+
    1 row in set (0.00 sec)

    mysql>

     

    - WEEKDAY(date)

    - DAYOFWEEK(date) 와 같으나 0은 월요일, 1은 화요일 ... 6은 일요일을 의미한다.

     

    mysql> select weekday('2006-10-5');
    +----------------------+
    | weekday('2006-10-5') |
    +----------------------+
    |                    3           |
    +----------------------+
    1 row in set (0.00 sec)

    mysql>


    - DAYOFMONTH(date)

    - 1에서 31까지 중 해당 달의 몇번째 날인지를 가져온다.

     

    mysql> select dayofmonth('2006-10-5');
    +-------------------------+
    | dayofmonth('2006-10-5')   |
    +-------------------------+
    |                       5             |
    +-------------------------+
    1 row in set (0.00 sec)

    mysql>

     

    - DAYOFYEAR(date)

    - 1에서 366까지 중 해당 연도의 몇번째 날인지를 가져온다.

     

    mysql> select dayofyear('2006-10-5');
    +------------------------+
    | dayofyear('2006-10-5')    |
    +------------------------+
    |                    278            |
    +------------------------+
    1 row in set (0.00 sec)

    mysql>

     

    - MONTH(date)

    - 1에서 12까지 중 해당 연도의 몇번째 달인지를 가져온다.

     

    mysql> select month('2006-10-5');
    +--------------------+
    | month('2006-10-5')   |
    +--------------------+
    |                 10          |
    +--------------------+
    1 row in set (0.00 sec)

    mysql>


     

    - DAYNAME(date)

    - 해당 날짜의 요일명을 가져온다.

     

    mysql> select dayname('2006-10-5');
    +----------------------+
    | dayname('2006-10-5') |
    +----------------------+
    | Thursday                   |
    +----------------------+
    1 row in set (0.00 sec)

    mysql>


     

    - MONTHNAME(date)

    - 해당 달의 이름을 가져온다.

     

    mysql> select monthname('2006-10-5');
    +------------------------+
    | monthname('2006-10-5') |
    +------------------------+
    | October                        |
    +------------------------+
    1 row in set (0.00 sec)

    mysql>

     

    - QUARTER(date)

    - 분기를 계산할 때 유용한 함수이다.

    - 1년을 4분기로 나누어 1에서 4까지 중 해당 분기를 가져온다.

     

    mysql> select quarter('2006-10-5');
    +----------------------+
    | quarter('2006-10-5')    |
    +----------------------+
    |                    4           |
    +----------------------+
    1 row in set (0.00 sec)

    mysql>

     

    - WEEK(date)

    - 해당연도의 몇번째 주인가를 가져온다.

     

    mysql> select week('2006-10-5');
    +-------------------+
    | week('2006-10-5')  |
    +-------------------+
    |                40         |
    +-------------------+
    1 row in set (0.00 sec)

    mysql>

     

    - WEEK(date,first)

    - week(date) 와 동일하나 한 주의 기준을 정할 수 있다.

    - first 인자에 0을 쓰면 일요일로 시작되는 주를 기준으로 순서를 가져오며

    - 1을 쓰면 월요일로 시작되는 주를 기준으로 순서를 가져온다.

    - MySQL 4.0 에서 first 에 해당하는 인자가 0 이고 해당 날짜가 전년도의 마지막 주에 해당

    - 하면 0을 가져온다.

     

    mysql> select week('2006-01-01'), week('2006-01-01',1), week('2006-01-01',0);
    +--------------------+----------------------+----------------------+
    | week('2006-01-01')  | week('2006-01-01',1)  | week('2006-01-01',0)   |
    +--------------------+----------------------+----------------------+
    |                  1          |                    0            |                    1           |
    +--------------------+----------------------+----------------------+
    1 row in set (0.00 sec)

    mysql>

     

    - YEAR(date)

    - 1000 에서 9999 까지의 연도를 가져온다.

     

    mysql> select year('2006-10-5');
    +-------------------+
    | year('2006-10-5')   |
    +-------------------+
    |              2006        |
    +-------------------+
    1 row in set (0.00 sec)

    mysql>

     

     

    - YEARWEEK(date)

    - 연도와 몇번째 주인가를 동시에 가져온다.

     

    mysql> select yearweek('2006-10-5');
    +-----------------------+
    | yearweek('2006-10-5')  |
    +-----------------------+
    |                200640         |
    +-----------------------+
    1 row in set (0.00 sec)

    mysql>

     

    - YEARWEEK(date,first)

    - yearweek(date) 와 동일하며 week(date,first) 에서 처럼 first에 한 주의 기준을

    - 정할 수 있다. first에 해당하는 인자가 0이고 해당 날짜가 전년도의 마지막 주에

    - 해당하면 전년도와 전년도의 마지막 주에 해당하는 순서를 가져온다.

     

    mysql> select yearweek('2006-10-5',0), yearweek('2006-10-5',1);
    +-------------------------+-------------------------+
    | yearweek('2006-10-5',0)   | yearweek('2006-10-5',1)  |
    +-------------------------+-------------------------+
    |                  200640           |                  200640          |
    +-------------------------+-------------------------+
    1 row in set (0.00 sec)

    mysql>

     

    - HOUR(time)

    - 0 에서 23 까지 중 해당 시간을 가져온다.

     

    mysql> select hour('17:09:40');
    +------------------+
    | hour('17:09:40')    |
    +------------------+
    |               17         |
    +------------------+
    1 row in set (0.00 sec)

    mysql>

     

    - MINUTE(time)

    - 0 에서 59 까지의 숫자 중 해당 분을 가져온다.

     

    mysql> select minute('17:09:40');
    +--------------------+
    | minute('17:09:40')    |
    +--------------------+
    |                  9          |
    +--------------------+
    1 row in set (0.00 sec)

    mysql>

     

    - SECOND(time)

    - 0 에서 59 까지의 숫자 중 해당 초를 가져온다.

     

    mysql> select second('17:09:40');
    +--------------------+
    | second('17:09:40')   |
    +--------------------+
    |                 40          |
    +--------------------+
    1 row in set (0.00 sec)

    mysql>


    - PERIOD_ADD(P,N)

    - P 기간에 N 달 만큼 더한 결과를 YYYYMM 형태로 가져온다.

    - 이때 P 는 YYMM 혹은 YYYYMM 형태일 뿐 date 값은 아님에 유의하시 바란다.

     

    mysql> select period_add(9810,2);
    +--------------------+
    | period_add(9810,2)  |
    +--------------------+
    |             199812        |
    +--------------------+
    1 row in set (0.00 sec)

    mysql>

     

    - PERIOD_DIFF(P1,P2)

    - YYMM 혹은 YYYYMM 형태의 P1 과 P2 가 몇달 사이인지 가져온다.

    - 이때 P1, P2 는 date 값이 아니다.

     

    mysql> select period_diff(9802,199703);
    +--------------------------+
    | period_diff(9802,199703)     |
    +--------------------------+
    |                       11             |
    +--------------------------+
    1 row in set (0.00 sec)

    mysql>

     

    - DATE_ADD(date,INTERVAL expr type) 혹은 ADDDATE(date,INTERVAL expr type)

    - date 로부터 expr 만큼 type 단위로 더한 결과를 가져온다.

     

    - DATE_SUB(date,INTERVAL expr type) 혹은 SUBDATE(data,INTERVAL expr type)

    - date 로부터 expr 만큼 type 단위로 뺀 견롸를 가져온다.

     

    - expr 과 type 이 어떻게 관계를 가지는지 나타낸 표는 다음과 같다.

    +----------------------------------------+

    | type 값                       | expr 형태           |

    +----------------------------------------+                                               

    | SECOND                    | 초                     |

    | MINUTE                     | 분                     |

    | HOUR                        | 시                     |

    | DAY                          | 날                     |

    | MONTH                      | 달                    |

    | YEAR                         | 년                    |

    | MINUTE_SECOND       | 분:초                 |

    | HOUR_MINUTE           | 시:분                 |

    | DAY_HOUR                 | 날 시                |

    | YEAR_MONTH            | 년-달                |

    | HOUR_SECOND          | 시:분:초             |

    | DAY_MINUTE             | 날 시:분             |

    | DAY_SECOND            | 날 시:분:초         |

    +----------------------+-----------------+

     

    mysql> select date_add("1997-12-31 23:59:59", interval 1 day);
    +-------------------------------------------------+
    | date_add("1997-12-31 23:59:59", interval 1 day)       |
    +-------------------------------------------------+
    | 1998-01-01 23:59:59                                             |
    +-------------------------------------------------+
    1 row in set (0.00 sec)

    mysql>

     

    - 1997-12-31 23:59:59 에 하루를 더해서 1998-01-01 23:59:59 값이 리턴된다.

     

    mysql> select date_add("1997-12-31 23:59:59", interval "1:1" minute_second);
    +---------------------------------------------------------------+
    | date_add("1997-12-31 23:59:59", interval "1:1" minute_second)       |
    +---------------------------------------------------------------+
    | 1998-01-01 00:01:00                                                                  |
    +---------------------------------------------------------------+
    1 row in set (0.00 sec)

    mysql>

     

    - 1997-12-31 23:59:59 에 1분 1초가 더해져서 1998-01-01 00:01:00 값이 리턴된다.

     

    mysql> select date_add("1998-01-01 00:00:00", interval "-1 10" day_hour);
    +------------------------------------------------------------+
    | date_add("1998-01-01 00:00:00", interval "-1 10" day_hour)        |
    +------------------------------------------------------------+
    | 1997-12-30 14:00:00                                                              |
    +------------------------------------------------------------+
    1 row in set (0.00 sec)

    mysql>

     

    - 1998-01-01 00:00:00 에서 하루 10시간 이전 즉 34시간 이전 의 값인

    - 1997-12-30 14:00:00 이 리턴된다.

     

    mysql> select date_sub("1998-01-02", interval 31 day);
    +-----------------------------------------+
    | date_sub("1998-01-02", interval 31 day)      |
    +-----------------------------------------+
    | 1997-12-02                                              |
    +-----------------------------------------+
    1 row in set (0.00 sec)

    mysql>

     

    - 1998-01-02 에서 31일이 빼어진 1997-12-02 가 리턴된다.

     

    mysql> select date_add("1998-01-30", interval 1 month);
    +------------------------------------------+
    | date_add("1998-01-30", interval 1 month)      |
    +------------------------------------------+
    | 1998-02-28                                               |
    +------------------------------------------+
    1 row in set (0.00 sec)

    mysql>

     

    - 위와 같이 30 일 간격의 날짜가 2 달을 넘어가게 될 경우 MONTH 간격은 30일 간격이

    - 아니라 다음 달의 마지막 날까지로 계산한다.

     

    - EXTRACT(type FROM date)

    - date 로부터 type 형태로 결과를 추출하여 가져온다.

    - 이때 type 은 DATE_ADD(), DATE_SUB() 에서 사용하는 type 과 같은 형태이다.

     

    mysql> select extract(day_hour from "1998-12-31 23:33:33");
    +----------------------------------------------+
    | extract(day_hour from "1998-12-31 23:33:33")      |
    +----------------------------------------------+
    |                                         3123                      |
    +----------------------------------------------+
    1 row in set (0.00 sec)

    mysql>

     

    - TO_DAYS(date)

    - 0 년부터 계산한 날짜수를 가져온다.

    - 참고로 TO_DAYS()는 그레고리력(1582)을 따르지 않는다.

     

    mysql> select to_days('2006-10-05');
    +-----------------------+
    | to_days('2006-10-05')   |
    +-----------------------+
    |                732954         |
    +-----------------------+
    1 row in set (0.00 sec)

    mysql>

     

    - FROM_DAYS(N)

    - 0 년부터 계산된 날짜수로부터 날짜를 가져온다.

    - 참고로 FROM_DAYS()는 그레고리력(1582)을 따르지 않는다.

     

    mysql> select from_days('732954');
    +---------------------+
    | from_days('732954')   |
    +---------------------+
    | 2006-10-05               |
    +---------------------+
    1 row in set (0.00 sec)

    mysql>

     

    - DATE_FORMAT(date,format)

    - 날짜를 원하는 문자열 형태로 바꿀 때 매우 유용하게 사용되는 함수이다.

    - format 에는 특정한 문자들을 열거하여 원하는 문자열을 만든다.

    - format 에 열거할 수 있는 문자와 그 설명은 다음 표와 같다.

     

    +------+-------------------------------------------------------------------------------+

    |열거자| 설명                                                                                                                |

    +------+-------------------------------------------------------------------------------+

    | %M  | 달 이름 (January, December)                                                                              |

    | %W  | 요일 이름 (Sunday, Saturday)                                                                             |

    | %D  | 1st, 2nd 와 같은 영문법에 의한 해당 달의 날짜                                                        |

    | %Y  | YYYY 형태의 연도                                                                                              |

    | %y  | YY 형태의 연도                                                                                                   |

    | %X  | 해당 날짜에 대해 일요일로 시작하는 주를 기준으로 YYYY 형태의 연도를 가져온다.       |

    |        | %v 와 함깨 쓰인다.                                                                                             |

    | %x  | 해당 날짜에 대해 월요일로 시작되는 주를 기준으로 YYYY 형태의 연도를 가져온다.        |

    |       | %v 와 함깨 쓰인다.                                                                                              |

    | %a  | Sun, Sat 와 같은 요일의 약어                                                                               |

    | %d  | 00 에서 31 까지의 해당 달의 날짜                                                                          |

    | %e  | 0 에서 31 까지의 해당 달의 날짜                                                                            |

    | %m  | 01 에서 12 까지의 해당 년의 달                                                                             |

    | %c  | 1 에서 12 까지의 해당 년의 달                                                                               |

    | %b  | Jan, Dec 와 같은 달의 약어                                                                                  |

    | %j   | 001 에서 366 까지의 해당 년의 날짜                                                                       |

    | %H  | 00 에서 23 까지의 시                                                                                           |

    | %k  | 0 에서 23 까지의 시                                                                                             |

    | %h  | 01 에서 12 까지의 시                                                                                           |

    | %l   | 01 에서 12 까지의 시                                                                                           |

    | %L  | 1 에서 12 까지의 시                                                                                             |

    | %i   | 00 에서 59 까지의 분                                                                                           |

    | %r   | 12 시간 기준으로 시간을 hh:mm:ss [AP]M 형태로 가져온다.                                     |

    | %T  | 24 시간 기준으로 시간을 hh:mm:ss 형태로 가져온다.                                                |

    | %S  | 00 에서 59 까지의 초                                                                                           |

    | %s  | 00 에서 59 까지의 초 ( %S 와 같다. )                                                                     |

    | %p  | AM 혹은 PM                                                                                                      |

    | %w  | 0 에서 6 까지 요일을 가져온다. ( 0=Sunday..6=Saturday )                                        |

    | %U  | 00 에서 53 까지 해당 년의 몇번째 주인가를 가져온다. 일요일이 시작인 주를 기준          |

    | %u  | 00 에서 53 까지 해당 년의 몇번째 주인가를 가져온다. 월요일이 시작인 주를 기준          |

    | %V  | 01 에서 53 까지 해당 년의 몇번째 주인가를 가져온다. 일요일이 시작인 주를 기준          |

    |       | ' %X ' 와 함깨 쓰인다.                                                                                         |

    | %v  | 01 에서 53 까지 해당 년의 몇번째 주인가를 가져온다. 월요일이 시작인 주를 기준           |

    |        | ' %x ' 와 함깨 쓰인다.                                                                                         |

    | %% | ' % ' 문자를 그대로 가져온다.                                                                               |

    +-----+--------------------------------------------------------------------------------+

     

    mysql> select date_format('1997-10-04 22:23:00', '%W %M %Y');
    +------------------------------------------------+
    | date_format('1997-10-04 22:23:00', '%W %M %Y')  |
    +------------------------------------------------+
    | Saturday October 1997                                        |
    +------------------------------------------------+
    1 row in set (0.09 sec)

    mysql>

     

    - %W 는 요일 이름을 리턴, %M 은 달 이름을 리턴, %Y는 YYYY 형태의 연도를 리턴

     

    mysql> select date_format('1997-10-04 22:23:00', '%H:%i:%s');
    +------------------------------------------------+
    | date_format('1997-10-04 22:23:00', '%H:%i:%s')     |
    +------------------------------------------------+
    | 22:23:00                                                            |
    +------------------------------------------------+
    1 row in set (0.00 sec)

    mysql>


    - %H는 00에서 23까지의 시를 리턴,%i 는 00에서 59까지의 분을 리턴,%s 00에서 59까지의 초 리턴

     

    mysql> select date_format('1999-01-01', '%X %V');
    +------------------------------------+
    | date_format('1999-01-01', '%X %V')   |
    +------------------------------------+
    | 1998 52                                           |
    +------------------------------------+
    1 row in set (0.00 sec)

    mysql>

     

    - %X 는 해당 날짜에 대해 일요일로 시작하는 주를 기준으로 YYYY 형태의 연도를 리턴

    - %V 는 01 에서 53 까지의 해당 년의 몇번째 주인가를 리턴. 일요일이 시작인 주를 기준

     

    - TIME_FORMAT(time, format)

    - DATE_FORMAT() 과 같은 방법으로 사용되는 함수이다. 단지 time 에 시간 값이 들어가고

    - format 에는 DATE_FORMAT() 에서 사용하는 열거자 중 시간이나 분, 초에 해당하는

    - 열거자만 들어가야 한다는 차이다 있다.

     

    - CURDATE() 혹은 CURRENT_DATE()

    - 함수가 문자열처럼 사용되느냐 숫자처럼 사용되느냐에 따라 현재 날짜를 'YYYY-HH-DD'

    - 혹은 'YYYYMMDD' 형태로 가져온다.

     

    mysql> select curdate(), curdate()+0, curdate()+1;
    +------------+-------------+-------------+
    | curdate()    | curdate()+0   | curdate()+1  |
    +------------+-------------+-------------+
    | 2006-10-06  |    20061006    |    20061007   |
    +------------+-------------+-------------+
    1 row in set (0.00 sec)

    mysql>

     

    - CURTIME() 혹은 CURRENT_TIME

    - 함수가 문자열처럼 사용되느냐 숫자처럼 사용되느냐에 따라 현재 시간은 'HH:MM:SS'

    - 혹은 'HHMMSS' 형태로 가져온다.

     

    mysql> select curtime(), curtime()+0, curtime()+1;
    +-----------+-------------+-------------+
    | curtime()   | curtime()+0   | curtime()+1   |
    +-----------+-------------+-------------+
    | 01:08:59     |       10859     |       10860    |
    +-----------+-------------+-------------+
    1 row in set (0.00 sec)

    mysql>

     

    - UNIX_TIMESTAMP 혹은 UNIX_TIMESTAMP(date)

    - 인자가 없는 경우에는 현재의 Unix 시간 ('1970-01-01 00:00:00' 을 기준으로 초단위) 을

    - 가져온다. date 인자가 있는 경우에는 date 의 Unix 시간 ('1970-01-01 00:00:00' 을

    - 기준으로 초단위) 을 가져온다.

     

    mysql> select unix_timestamp(), unix_timestamp('2002-05-04 22:23:00');
    +------------------+---------------------------------------+
    | unix_timestamp()   | unix_timestamp('2002-05-04 22:23:00')    |
    +------------------+---------------------------------------+
    |       1160066173     |                            1020518580               |
    +------------------+---------------------------------------+
    1 row in set (0.00 sec)

    mysql>

     

    - FROM_UNIXTIME(unix_timestamp)

    - 문자열처럼 사용되느냐 숫자처럼 사용되느냐에 따라 유닉스 시간을 'YYYY-MM-DD HH:MM:SS'

    - 혹은 'YYYYMMDDHHMMSS' 형태로 가져온다.

     

    - FROM_UNIXTIME(unix_timestamp,format)

    - 유닉스 시간을 원하는 형태로 변환하여 가져온다. format 에 들어갈 열거자들은

    - DATE_FORMAT() 함수에서 사용하는 열거자들을 사용할 수 있다.

     

    mysql> select from_unixtime(unix_timestamp(), '%Y %D %M %h:%i:%s %x');
    +-----------------------------------------------------------+
    | from_unixtime(unix_timestamp(), '%Y %D %M %h:%i:%s %x') |
    +-----------------------------------------------------------+
    | 2006 6th October 01:40:17 2006                                             |
    +-----------------------------------------------------------+
    1 row in set (0.38 sec)

    mysql>


     

    - SEC_TO_TIME(seconds)

    - 초를 시,분,초 형태로 변환한다. 함수가 문자열처럼 사용되느냐 숫자처럼 사용되느냐에 따라

    - 'HH:MM:SS' 혹은 'HHMMSS' 형태로 가져온다.

     

    mysql> select sec_to_time(2378);
    +-------------------+
    | sec_to_time(2378)   |
    +-------------------+
    | 00:39:38                 |
    +-------------------+
    1 row in set (0.36 sec)

    mysql>

     

    - TIME_TO_SEC(time)

    - time 을 초로 변환한다.

     

    mysql> select time_to_sec('22:23:00');
    +-------------------------+
    | time_to_sec('22:23:00')     |
    +-------------------------+
    |                   80580           |
    +-------------------------+
    1 row in set (0.00 sec)

    mysql>


     

Designed by Tistory.