[ Mysql ] 시간및 날짜 함수 정리
페이지 정보
작성자 웹지기 댓글 0건 조회 9,369회 작성일 18-09-11 11:47본문
MySQL에서 사용되는 날짜 함수에 대해서 정리합니다.
아래 정리된 함수중 절반만 숙지해도 날짜 및 시간에 대해서는 쉽게 컨트롤할 수 있을것 같네요^^
현재 날짜 및 시간을 얻는 함수
- NOW() : 현재 날짜 및 시간을 반환합니다.
- SYSDATE() : NOW()와 동일합니다.
mysql> select NOW();
+---------------------+
| NOW() |
+---------------------+
| 2014-09-30 14:33:11 |
+---------------------+
1 row in set (0.00 sec)
mysql> select SYSDATE();
+---------------------+
| SYSDATE() |
+---------------------+
| 2014-09-30 14:33:15 |
+---------------------+
1 row in set (0.00 sec)
-
CURDATE()
: 현재 날짜를 반환합니다.
mysql> select CURDATE();
+------------+
| CURDATE() |
+------------+
| 2014-09-30 |
+------------+
1 row in set (0.00 sec)
- CURTIME() : 현재 시간을 반환합니다.
mysql> select CURTIME();
+-----------+
| CURTIME() |
+-----------+
| 14:33:40 |
+-----------+
1 row in set (0.00 sec)
- UNIX_TIMESTAMP() : 현재 유닉스 시간을 반환합니다.유닉스 시간은 '1970-01-01 00:00:00'으로부터 경과한 시간을 초단위로 표현합니다.
mysql> select UNIX_TIMESTAMP();
+------------------+
| UNIX_TIMESTAMP() |
+------------------+
| 1412056532 |
+------------------+
1 row in set (0.00 sec)
특정 형태 반환 함수
-DAYOFWEEK(date) :
해당 날짜의 요일을 숫자로 반환합니다. 일요일 : 1 ~ 토요일 : 7 mysql> select DAYOFWEEK('2014-09-30');
+-------------------------+
| DAYOFWEEK('2014-09-30') |
+-------------------------+
+-------------------------+
1 row in set (0.00 sec)
- WEEKDAY(date)
: 해당 날짜의 요일을 숫자로 반환합니다. 월요일 : 0 ~ 일요일 : 6
MariaDB [(none)]> select WEEKDAY('2014-09-30');
+-----------------------+
| WEEKDAY('2014-09-30') |
+-----------------------+
| 1 |
+-----------------------+
1 row in set (0.00 sec)
위 두 함수의 경우 모두 요일을 반환하지만 반환하는 값이 다르므로 사용 시 주의를 요합니다.
- DAYOFYEAR(date) : 해당 날짜의 1월 1일 부터의 경과 일수를 반환합니다. 결과값은 1~366입니다.
mysql> select DAYOFYEAR(NOW());
+------------------+
| DAYOFYEAR(NOW()) |
+------------------+
| 273 |
+------------------+
1 row in set (0.00 sec)
- YEAR(date) : 해당 날짜의 년을 반환합니다.
mysql> select YEAR(NOW());
+-------------+
| YEAR(NOW()) |
+-------------+
| 2014 |
+-------------+
1 row in set (0.00 sec)
- MONTH(date) : 해당 날짜의 월을 반환합니다.
mysql> select MONTH(NOW());
+--------------+
| MONTH(NOW()) |
+--------------+
| 9 |
+--------------+
1 row in set (0.00 sec)
- DAYOFMONTH(date) : 해당 날짜의 일을 반환합니다.
mysql> select DAYOFMONTH(NOW());
+-------------------+
| DAYOFMONTH(NOW()) |
+-------------------+
| 30 |
+-------------------+
1 row in set (0.00 sec)
- HOUR(time) : 해당 날짜의 시간을 반환합니다.
mysql> select HOUR(NOW());
+-------------+
| HOUR(NOW()) |
+-------------+
| 16 |
+-------------+
1 row in set (0.00 sec)
- MINUTE(time) : 해당 날짜의 분을 반환합니다.
mysql> select MINUTE(NOW());
+---------------+
| MINUTE(NOW()) |
+---------------+
| 55 |
+---------------+
1 row in set (0.00 sec)
- SECOND(time) : 해당 날짜의 초를 반환합니다.
mysql> select SECOND(NOW());
+---------------+
| SECOND(NOW()) |
+---------------+
| 20 |
+---------------+
1 row in set (0.00 sec)
- DAYNAME(date) : 해당 날짜의 요일 이름을 반환합니다. ex) Tuesday
mysql> select DAYNAME(NOW());
+----------------+
| DAYNAME(NOW()) |
+----------------+
| Tuesday |
+----------------+
1 row in set (0.00 sec)
- MONTHNAME(date) : 해당 날짜의 월 이름을 반환합니다. ex) September
mysql> select MONTHNAME(NOW());
+------------------+
| MONTHNAME(NOW()) |
+------------------+
| September |
+------------------+
1 row in set (0.00 sec)
- QUARTER(date) : 해당 날짜의 분기를 반환합니다. 범위는 1 ~ 4 입니다.
mysql> select QUARTER(NOW());
+----------------+
| QUARTER(NOW()) |
+----------------+
| 3 |
+----------------+
1 row in set (0.00 sec)
- WEEK(date, first) : 해당 날짜의 주 수를 반환합니다. 두번째 인자가 0인 경우 일요일, 1인 경우 월요일부터 주의 시작을 계산합니다.
mysql> select WEEK(NOW(), 0);
+----------------+
| WEEK(NOW(), 0) |
+----------------+
| 39 |
+----------------+
1 row in set (0.00 sec)
날짜 및 시간 편집 함수
- PERIOD_ADD(P, N) : P(YYYYMM 혹은 YYMM)에 N의 달 수를 더한 값을 반환한다.
mysql> select PERIOD_ADD(201409, 10);
+------------------------+
| PERIOD_ADD(201409, 10) |
+------------------------+
| 201507 |
+------------------------+
1 row in set (0.00 sec)
- PERIOD_DIFF(P1, P2) : P1과 P2(둘 모두 YYYYMM 혹은 YYMM) 사이의 달 수를 반환한다. 만약 P2가 큰 경우 마이너스 값이 반환된다.
mysql> select PERIOD_DIFF(201701, 201409);
+-----------------------------+
| PERIOD_DIFF(201701, 201409) |
+-----------------------------+
| 28 |
+-----------------------------+
1 row in set (0.00 sec)
- DATE_ADD(date, INTERVAL expr type) : 해당 날짜에서 뒤의 인자만큼 더한 날짜를 반환합니다.
- ADDDATE(date, INTERVAL expr type) : DATE_ADD()와 동일합니다.
mysql> select DATE_ADD(NOW(), INTERVAL 10 DAY);
+----------------------------------+
| DATE_ADD(NOW(), INTERVAL 10 DAY) |
+----------------------------------+
| 2014-10-10 17:20:45 |
+----------------------------------+
1 row in set (0.00 sec)
mysql> select ADDDATE(NOW(), INTERVAL 10 DAY);
+---------------------------------+
| ADDDATE(NOW(), INTERVAL 10 DAY) |
+---------------------------------+
| 2014-10-10 17:20:45
|
+---------------------------------+
1 row in set (0.00 sec)
* type에 사용되는 키워드는 SECOND, MINUTE, HOUR, DAY, MONTH, YEAR, MINUTE_SECOND, HOUR_MINUTE, DAY_HOUR, YEAR_MONTH, HOUR_SECOND, DAY_MINUTE, DAY_SECOND입니다.
- DATE_SUB(date, INTERVAL expr type) : 해당 날짜에서 뒤의 인자만큼 뺀 날짜를 한환합니다.
- SUBDATE(date, INVERVAL expr type) : DATE_SUB()와 동일합니다.
mysql> select DATE_SUB(NOW(), INTERVAL 10 DAY);
+----------------------------------+
| DATE_SUB(NOW(), INTERVAL 10 DAY) |
+----------------------------------+
| 2014-09-20 17:30:28 |
+----------------------------------+
1 row in set (0.00 sec)
mysql> select SUBDATE(NOW(), INTERVAL 10 DAY);
+---------------------------------+
| SUBDATE(NOW(), INTERVAL 10 DAY) |
+---------------------------------+
| 2014-09-20 17:30:28 |
+---------------------------------+
1 row in set (0.00 sec)
- EXTRACT(type FROM date) : 해당 날짜에서 type을 분리하여 반환합니다.
mysql> select EXTRACT(DAY FROM NOW());
+-------------------------+
| EXTRACT(DAY FROM NOW()) |
+-------------------------+
| 30 |
+-------------------------+
1 row in set (0.00 sec)
기타 함수들
- TO_DAYS(date) : 0년 부터의 날짜수를 반환합니다. 1582년 이전 날에 대해서는 계산하지 않습니다.
MariaDB [(none)]> select TO_DAYS(NOW());
+----------------+
| TO_DAYS(NOW()) |
+----------------+
| 735871 |
+----------------+
1 row in set (0.00 sec)
- FROM_DAYS(N) : 0년부터 N일만큼 지난 날짜를 반환합니다. TO_DYAS에 반대로 동작합니다. 마찬가지로 1582년 이전 날에 대해서는 계산하지 않습니다.
MariaDB [(none)]> select FROM_DAYS(735871);
+-------------------+
| FROM_DAYS(735871) |
+-------------------+
| 2014-09-30 |
+-------------------+
1 row in set (0.00 sec)
- DATE_FORMAT(date, format) : 날짜를 해당 형식의 문자열로 변환하여 반환합니다.
MariaDB [(none)]> select DATE_FORMAT(NOW(), '%W %Y %M %D');
+-----------------------------------+
| DATE_FORMAT(NOW(), '%W %Y %M %D') |
+-----------------------------------+
| Tuesday 2014 September 30th |
+-----------------------------------+
1 row in set (0.00 sec)
* format은 %M(달 이름), %W(요일 이름), %Y(YYYY형식의 연도), %y(YY형식의 연도), %a(요일 이름의 약자), %d(DD 형식의 날짜), %e(D 형식의 날짜), %m(MM 형식의 날짜), %c(M 형식의 날짜), %H(HH 형식의 시간, 24시간 형식), %k(H 형식의 시간, 24시간 형식), %h(HH 형식의 시간, 12시간 형식), %i(MM 형식의 분), %p(AM 또는 PM)이 있습니다.
- TIME_FORMAT(date, format) : 시간을 해당 형식의 문자열로 변환하여 반환합니다.
MariaDB [(none)]> select TIME_FORMAT(CURTIME(), '%p %k %i');
+------------------------------------+
| TIME_FORMAT(CURTIME(), '%p %k %i') |
+------------------------------------+
| PM 19 47 |
+------------------------------------+
1 row in set (0.00 sec)
- TIME_TO_SEC(time) : 해당 시간의 0시부터의 초를 반환합니다.
MariaDB [(none)]> select TIME_TO_SEC(CURTIME());
+------------------------+
댓글목록
등록된 댓글이 없습니다.