[ Mysql ] 시간및 날짜 함수 정리 > database

본문 바로가기
사이트 내 전체검색

database

[ Mysql ] 시간및 날짜 함수 정리

페이지 정보

작성자 웹지기 댓글 0건 조회 7,332회 작성일 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());
+------------------------+

추천0 비추천0

댓글목록

등록된 댓글이 없습니다.

Total 34건 1 페이지
  • 34 [ mysql ] auto increment 초기화 방법과 데이터에 적용시키는 방법
  • auto increment 초기화 -> ALTER TABLE [테이블명] auto_increment=1; auto increment 초기화 후 기존 데이터 적용 시키기 -> ALTER TABLE [테이블명] auto_increment=1; -> SET @count = 0; -> UPDATE [테이블] SET [auto_increment 컬럼명] = @count:=@count+1;
  • 웹지기 09-22 2932 0 0 댓글 0
  • 33 [ mysql ] 맥에서 xampp 의 db root 계정 비밀번호 설정
  • [ mysql ] 맥에서 xampp 의 root 계정 비밀번호 설정 터미널 > mysqladmin 파일이 있는 곳으로 이동 >./mysqladmin -uroot PASSWORD '1234' 이렇게 엔터를 치게 되면 원래 접속이 되던 url : localhost/phpmyadmin 의 접속이 끊기게 된다. 정상적으로 접속이 끊기면 config.inc.php 파일을 찾아서 비밀번호를 수정해준다. 파일의 위치로 이동을 하고 >sudo vim c...
  • 웹지기 07-11 3209 0 0 댓글 0
  • 32 [ mysql ] 맥에서 관리자 권한으로 파일 실행
  • 일단 내가 수정하고 싶은 파일은 phpmyadmin 에서 사용되는 config.inc.php 파일이었다. 그래서 sudo vim config.inc.php 를 입력 비밀번호 입력 이렇게 해서 파일을 수정했다. 여기 저기 찾아봤는데 너무 복잡해서 이렇게 하니까 되었다. 다행이도....
  • 웹지기 07-11 3034 0 0 댓글 0
  • 31 [ mysql ] case 기본 사용법
  • CASE 구문은 mysql 4.0 이상부터는 사용이 가능한 구문이고 IF-THEN-ELSE문과 같이 조건이 성립하면 TRUE를 반환하는 형태입니다. 사용하는 방법은 CASE WHEN 조건 THEN 값 WHEN 조건 THEN 값 ELSE 값 END 와 같은 형태로 사용하며 사용가능한 곳은 XXXX로 되어진 SELECT XXXX FROM [table] ORDER BY XXXX 1) 불러올 column에 사용할 경우 SELECT [column1], [column2], CAS...
  • 웹지기 01-19 4105 0 0 댓글 0
  • 30 [ mysql ] order by 특정값을 가지는 행을 우선순위로 정렬
  • 1) SELECT * FROM [table] ORDER BY CASE WHEN [column] IN('N', 'Y') THEN 0 ELSE 1 END, [column]; RESULT의 값이 숫자일 경우 연산가능 CASE WHEN [column]/ 10 IN(5,9) THEN 0 ELSE 1 END, [column] ; [column]의 값이 'N', 'Y' 의 값을 갖는 행을 맨위로 출력하고 나머지를 뒤의 [column]값으로 정렬 2) SELECT * FROM [table] ORD...
  • 웹지기 01-19 4730 0 0 댓글 0
  • 28 [ mysql ] dbeaver 한글 깨짐 현상
  • [ mysql ] dbeaver 한글 깨짐 현상 db의 한글이 정상인데 dbeaver 에서 한글 깨짐 현상이 생긴다면 C:\Program Files\DBeaver\dbeaver.ini파일을 notepad++ 같은 파일로 열어서 최하단에 -Dfile.encoding=UTF-8 코드를 넣고 수정한다 관리자로 파일을 열어야 수정이 가능하다 notepad++같은 경우 수정을 누르면 관리자로 열건지 다시 물어본다. 확인해주면 관리자로 바뀌면서 수정이 가능해 진다. 그리고 dbeaver 다시 시...
  • 웹지기 10-14 16425 0 0 댓글 0
  • 27 [ mysql ] mariadb 설치 후 비밀번호 초기 변경
  • 1. mysqladmin 을 이용하는 방법 >mysqladmin -u root -p password 새비밀번호 >Enter password: 기존비밀번호입력 최초설치시에는 비밀번호가 없으므로 기존 비밀번호에서는 그냥 Enter 새비밀번호에 '1234' 이런형태로 입력하면 비밀번호는 1234가 아니고 '1234' 가 된다 2. mysql update를 이용하는 방법 >mysql -u root -p >Enter password:...
  • 웹지기 05-11 15775 0 0 댓글 0
  • 24 [ mysql ] update를 이용한 일괄계산(이 구문으로 모든데이터의 값을 한번에 바꾼다)
  • update 테이블 set 필드명=(가져올필드명*실수) where 조건구문위와같은 식으로 한번에 여러 필드의 값을 곱하거나 더해서 전체적으로 계산을 쉽게 할 수 있다.가령 185,555 원이 있을때 이 값을 186,000 으로 올리고 싶을때는+++ update 테이블 set 필드명 = (가져올필드명 * 0.001) where 조건구문 <== 을 이용하여 일단 뒤에붙은555라는 숫자를 자동올림으로 올려버린다 값은 186 이된다.이값을 다시 한번 update 구문을 이용하여 정상가격으로...
  • 웹지기 10-01 9164 0 0 댓글 0
  • 23 [ mysql ] datetime의 기본값 입력시 db 오류 현상
  • datetime의 db에 직접입력시[code]ALTER TABLE `테이블명` ADD `추가필드이름` DATETIME NOT NULL DEFAULT '0000-00-00 00:00:00' AFTER `추가할 이전 필드`;[/code]이러한 형태로 값을 넣으면 오류(#1067 - Invalid default value for 'wr_datetime')가 발생하여 저장이 되지 않는다하지만, php 에서 변수를 통해서 입력하면 정상적으로 들어가 지기는 한다.[code]$sql = " ALTER...
  • 웹지기 09-27 9213 0 0 댓글 0
  • 22 [ Mysql ] 데이터 형 set 사용법
  • [code]SELECT * FROM 테이블명 WHERE 셋형필드명 LIKE '%value%';SELECT * FROM 테이블명 WHERE FIND_IN_SET('value',필드명) > 0;SELECT * FROM 테이블명 WHERE 필드명='val1,val2';SELECT * FROM 테이블명 WHERE 필드명 & 1;[/code]
  • 웹지기 09-27 4322 0 0 댓글 0
  • 20 [ Mysql ] 내장함수 정리
  • MySQL 내장 함수 정리 1. 숫자 관련 함수▶ ABS(숫자) - 절대값 출력.▶ CEILING(숫자) - 값보다 큰 정수 중 가장 작은 수.▶ FLOOR(숫자) - 값보다 작은 정수 중 가장 큰 수[실수를 무조건 버림(음수일 경우는 제외)].▶ ROUND(숫자,자릿수) - 숫자를 소수점 이하 자릿수에서 반올림.(자릿수는 양수,0,음수를 갖을 수 있다.)▶ TRUNCATE(숫자,자릿수) - 숫자를 소수점 이하 자릿수에서 버림.▶ POW(X,Y) or POWER(X,Y) - X의 Y승▶ MOD ...
  • 웹지기 09-19 7355 0 0 댓글 0
게시물 검색

회원로그인

접속자집계

오늘
2,406
어제
6,915
최대
33,828
전체
8,107,100

그누보드5
Copyright © funyphp.com. All rights reserved.