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>


+ Recent posts